Crate jsonrpc_core [] [src]

Transport agnostic jsonrpc library.

Right now it supports only server side handling requests.

extern crate jsonrpc_core;

use jsonrpc_core::*;

struct SayHello;
impl SyncMethodCommand for SayHello {
    fn execute(&self, _params: Params) -> Result<Value, Error> {
        Ok(Value::String("hello".to_string()))
    }
}

struct SayHelloAsync;
impl AsyncMethodCommand for SayHelloAsync {
    fn execute(&self, _params: Params, ready: Ready) {
        ready.ready(Ok(Value::String("hello".to_string())))
    }
}

fn main() {
    let io = IoHandler::new();
    io.add_method("say_hello", SayHello);
    io.add_async_method("say_hello_async", SayHelloAsync);

    let request = r#"{"jsonrpc": "2.0", "method": "say_hello", "params": [42, 23], "id": 1}"#;
    let request2 = r#"{"jsonrpc": "2.0", "method": "say_hello_async", "params": [42, 23], "id": 1}"#;
    let response = r#"{"jsonrpc":"2.0","result":"hello","id":1}"#;

    assert_eq!(io.handle_request_sync(request), Some(response.to_string()));
    assert_eq!(io.handle_request_sync(request2), Some(response.to_string()));
}

Reexports

pub use self::async::{AsyncResult, AsyncOutput, Response, Ready};
pub use self::version::Version;
pub use self::id::Id;
pub use self::params::Params;
pub use self::request::{Request, Call, MethodCall, Notification};
pub use self::response::{Output, SyncResponse, SyncOutput, Success, Failure};
pub use self::error::{ErrorCode, Error};
pub use self::commander::{Commander, MethodCommand, SyncMethodCommand, AsyncMethodCommand, AsyncMethod, NotificationCommand, MethodResult};
pub use self::request_handler::RequestHandler;
pub use self::io::{IoHandler, IoDelegate, AsyncStringResponse};
pub use self::util::{from_params, to_value};

Modules

async

Asynchronous results, outputs and responses.

commander

method and notification commands executor

error

jsonrpc errors

id

jsonrpc id field

io

jsonrpc io

params

jsonrpc params field

request

jsonrpc request

request_handler

jsonrpc server request handler

response

jsonrpc response

util

Serialization / Deserialization utilities.

version

jsonrpc version field

Enums

Value

Represents a JSON value