susy_jsonrpc_core/
lib.rs

1//! ### Transport agnostic jsonrpc library.
2//!
3//! Right now it supports only server side handling requests.
4//!
5//! ```rust
6//! use susy_jsonrpc_core::*;
7//! use susy_jsonrpc_core::futures::Future;
8//!
9//! fn main() {
10//! 	let mut io = IoHandler::new();
11//! 	io.add_method("say_hello", |_| {
12//!			Ok(Value::String("Hello World!".into()))
13//! 	});
14//!
15//! 	let request = r#"{"jsonrpc": "2.0", "method": "say_hello", "params": [42, 23], "id": 1}"#;
16//! 	let response = r#"{"jsonrpc":"2.0","result":"Hello World!","id":1}"#;
17//!
18//! 	assert_eq!(io.handle_request(request).wait().unwrap(), Some(response.to_string()));
19//! }
20//! ```
21
22#![warn(missing_docs)]
23
24#[macro_use] extern crate log;
25#[macro_use] extern crate serde_derive;
26
27pub use futures;
28
29#[doc(hidden)]
30pub extern crate serde_json;
31
32mod calls;
33mod io;
34
35pub mod middleware;
36pub mod types;
37pub mod delegates;
38
39/// A `Future` trait object.
40pub type BoxFuture<T> = Box<futures::Future<Item = T, Error = Error> + Send>;
41
42/// A Result type.
43pub type Result<T> = ::std::result::Result<T, Error>;
44
45pub use crate::calls::{RemoteProcedure, Metadata, RpcMethodSimple, RpcMethod, RpcNotificationSimple, RpcNotification};
46pub use crate::delegates::IoDelegate;
47pub use crate::io::{Compatibility, IoHandler, MetaIoHandler, FutureOutput, FutureResult, FutureResponse, FutureRpcResult};
48pub use crate::middleware::{Middleware, Noop as NoopMiddleware};
49pub use crate::types::*;