Merge branch 'master' into blockchaintests
This commit is contained in:
commit
53d0b68ce8
@ -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"
|
||||||
|
@ -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"]
|
||||||
|
@ -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());
|
||||||
|
@ -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"
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
@ -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 }
|
||||||
}
|
}
|
||||||
|
|
@ -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
10
rpc/src/v1/mod.rs
Normal 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::*;
|
@ -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
|
@ -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" }
|
||||||
|
Loading…
Reference in New Issue
Block a user