Merge branch 'master' into blockchaintests

This commit is contained in:
Gav Wood 2016-01-27 17:24:58 +01:00
commit 53d0b68ce8
20 changed files with 45 additions and 18 deletions

View File

@ -17,7 +17,7 @@ heapsize = "0.2.0"
rust-crypto = "0.2.34" rust-crypto = "0.2.34"
time = "0.1" time = "0.1"
#interpolate_idents = { git = "https://github.com/SkylerLipthay/interpolate_idents" } #interpolate_idents = { git = "https://github.com/SkylerLipthay/interpolate_idents" }
evmjit = { path = "rust-evmjit", optional = true } evmjit = { path = "evmjit", optional = true }
ethash = { path = "ethash" } ethash = { path = "ethash" }
num_cpus = "0.2" num_cpus = "0.2"
clippy = "0.0.37" clippy = "0.0.37"

View File

@ -15,6 +15,7 @@ ctrlc = "1.0"
ethcore-util = { path = "../util" } ethcore-util = { path = "../util" }
ethcore-rpc = { path = "../rpc", optional = true } ethcore-rpc = { path = "../rpc", optional = true }
ethcore = { path = ".." } ethcore = { path = ".." }
clippy = "0.0.37"
[features] [features]
rpc = ["ethcore-rpc"] rpc = ["ethcore-rpc"]

View File

@ -1,6 +1,9 @@
//! Ethcore client application.
#![warn(missing_docs)]
#![feature(plugin)] #![feature(plugin)]
#![plugin(docopt_macros)] #![plugin(docopt_macros)]
// required for serde, move it to a separate library #![plugin(clippy)]
extern crate docopt; extern crate docopt;
extern crate rustc_serialize; extern crate rustc_serialize;
extern crate ethcore_util as util; extern crate ethcore_util as util;
@ -35,7 +38,7 @@ Options:
-h --help Show this screen. -h --help Show this screen.
"); ");
fn setup_log(init: &String) { fn setup_log(init: &str) {
let mut builder = LogBuilder::new(); let mut builder = LogBuilder::new();
builder.filter(None, LogLevelFilter::Info); builder.filter(None, LogLevelFilter::Info);
@ -51,9 +54,9 @@ fn setup_log(init: &String) {
#[cfg(feature = "rpc")] #[cfg(feature = "rpc")]
fn setup_rpc_server(client: Arc<Client>) { fn setup_rpc_server(client: Arc<Client>) {
use rpc::*; use rpc::v1::*;
let mut server = HttpServer::new(1); let mut server = rpc::HttpServer::new(1);
server.add_delegate(Web3Client::new().to_delegate()); server.add_delegate(Web3Client::new().to_delegate());
server.add_delegate(EthClient::new(client.clone()).to_delegate()); server.add_delegate(EthClient::new(client.clone()).to_delegate());
server.add_delegate(EthFilterClient::new(client).to_delegate()); server.add_delegate(EthFilterClient::new(client).to_delegate());

View File

@ -3,7 +3,7 @@ description = "Ethcore jsonrpc"
name = "ethcore-rpc" name = "ethcore-rpc"
version = "0.1.0" version = "0.1.0"
license = "GPL-3.0" license = "GPL-3.0"
authors = ["Marek Kotewicz <marek.kotewicz@gmail.com"] authors = ["Ethcore <admin@ethcore.io"]
[lib] [lib]
@ -15,4 +15,5 @@ jsonrpc-core = "1.1"
jsonrpc-http-server = "1.1" jsonrpc-http-server = "1.1"
ethcore-util = { path = "../util" } ethcore-util = { path = "../util" }
ethcore = { path = ".." } ethcore = { path = ".." }
clippy = "0.0.37"

View File

@ -1,6 +1,8 @@
//! Ethcore rpc.
#![warn(missing_docs)]
#![feature(custom_derive, custom_attribute, plugin)] #![feature(custom_derive, custom_attribute, plugin)]
#![feature(slice_patterns)]
#![plugin(serde_macros)] #![plugin(serde_macros)]
#![plugin(clippy)]
extern crate serde; extern crate serde;
extern crate serde_json; extern crate serde_json;
@ -15,19 +17,16 @@ macro_rules! rpcerr {
() => (Err(Error::internal_error())) () => (Err(Error::internal_error()))
} }
pub mod traits; pub mod v1;
mod impls;
mod types;
pub use self::traits::{Web3, Eth, EthFilter, Net};
pub use self::impls::*;
/// Http server.
pub struct HttpServer { pub struct HttpServer {
handler: IoHandler, handler: IoHandler,
threads: usize threads: usize
} }
impl HttpServer { impl HttpServer {
/// Construct new http server object with given number of threads.
pub fn new(threads: usize) -> HttpServer { pub fn new(threads: usize) -> HttpServer {
HttpServer { HttpServer {
handler: IoHandler::new(), handler: IoHandler::new(),
@ -35,10 +34,12 @@ impl HttpServer {
} }
} }
/// Add io delegate.
pub fn add_delegate<D>(&mut self, delegate: IoDelegate<D>) where D: Send + Sync + 'static { pub fn add_delegate<D>(&mut self, delegate: IoDelegate<D>) where D: Send + Sync + 'static {
self.handler.add_delegate(delegate); self.handler.add_delegate(delegate);
} }
/// Start server asynchronously in new thread
pub fn start_async(self, addr: &str) { pub fn start_async(self, addr: &str) {
let server = jsonrpc_http_server::Server::new(self.handler, self.threads); let server = jsonrpc_http_server::Server::new(self.handler, self.threads);
server.start_async(addr) server.start_async(addr)

View File

@ -1,3 +1,4 @@
//! Eth rpc implementation.
use std::sync::Arc; use std::sync::Arc;
use jsonrpc_core::*; use jsonrpc_core::*;
use util::hash::*; use util::hash::*;
@ -5,14 +6,16 @@ use util::uint::*;
use util::sha3::*; use util::sha3::*;
use ethcore::client::*; use ethcore::client::*;
use ethcore::views::*; use ethcore::views::*;
use traits::{Eth, EthFilter}; use v1::traits::{Eth, EthFilter};
use types::Block; use v1::types::Block;
/// Eth rpc implementation.
pub struct EthClient { pub struct EthClient {
client: Arc<Client>, client: Arc<Client>,
} }
impl EthClient { impl EthClient {
/// Creates new EthClient.
pub fn new(client: Arc<Client>) -> Self { pub fn new(client: Arc<Client>) -> Self {
EthClient { EthClient {
client: client client: client
@ -100,11 +103,13 @@ impl Eth for EthClient {
} }
} }
/// Eth filter rpc implementation.
pub struct EthFilterClient { pub struct EthFilterClient {
client: Arc<Client> client: Arc<Client>
} }
impl EthFilterClient { impl EthFilterClient {
/// Creates new Eth filter client.
pub fn new(client: Arc<Client>) -> Self { pub fn new(client: Arc<Client>) -> Self {
EthFilterClient { EthFilterClient {
client: client client: client

View File

@ -1,10 +1,12 @@
//! Net rpc implementation. //! Net rpc implementation.
use jsonrpc_core::*; use jsonrpc_core::*;
use traits::Net; use v1::traits::Net;
/// Net rpc implementation.
pub struct NetClient; pub struct NetClient;
impl NetClient { impl NetClient {
/// Creates new NetClient.
pub fn new() -> Self { NetClient } pub fn new() -> Self { NetClient }
} }

View File

@ -1,9 +1,12 @@
//! Web3 rpc implementation.
use jsonrpc_core::*; use jsonrpc_core::*;
use traits::Web3; use v1::traits::Web3;
/// Web3 rpc implementation.
pub struct Web3Client; pub struct Web3Client;
impl Web3Client { impl Web3Client {
/// Creates new Web3Client.
pub fn new() -> Self { Web3Client } pub fn new() -> Self { Web3Client }
} }

10
rpc/src/v1/mod.rs Normal file
View File

@ -0,0 +1,10 @@
//! Ethcore rpc v1.
//!
//! Compliant with ethereum rpc.
pub mod traits;
mod impls;
mod types;
pub use self::traits::{Web3, Eth, EthFilter, Net};
pub use self::impls::*;

View File

@ -44,6 +44,7 @@ pub trait Eth: Sized + Send + Sync + 'static {
} }
} }
/// Eth filters rpc api (polling).
// TODO: do filters api properly // TODO: do filters api properly
pub trait EthFilter: Sized + Send + Sync + 'static { pub trait EthFilter: Sized + Send + Sync + 'static {
/// Returns id of new block filter /// Returns id of new block filter

View File

@ -26,7 +26,7 @@ crossbeam = "0.2"
slab = { git = "https://github.com/arkpar/slab.git" } slab = { git = "https://github.com/arkpar/slab.git" }
sha3 = { path = "sha3" } sha3 = { path = "sha3" }
serde = "0.6.7" serde = "0.6.7"
clippy = "*" # Always newest, since we use nightly clippy = "0.0.37"
[dev-dependencies] [dev-dependencies]
json-tests = { path = "json-tests" } json-tests = { path = "json-tests" }