Crate json_rpc2[−][src]
Simple, robust and pragmatic facade for JSON-RPC2 services that is transport agnostic.
use json_rpc2::*; use serde_json::Value; struct ServiceHandler; impl Service for ServiceHandler { fn handle(&self, req: &mut Request) -> Result<Option<Response>> { let mut response = None; if req.matches("hello") { let params: String = req.into_params()?; let message = format!("Hello, {}!", params); response = Some((req, Value::String(message)).into()); } Ok(response) } } fn main() -> Result<()> { let service: Box<dyn Service> = Box::new(ServiceHandler {}); let mut request = Request::new( "hello", Some(Value::String("world".to_string()))); let services = vec![&service]; let response = match Broker::handle(&services, &mut request) { Ok(response) => response, Err(e) => e.into(), }; println!("{:?}", response.result()); assert_eq!( Some(Value::String("Hello, world!".to_string())), response.into_result()); Ok(()) }
Structs
Broker | Broker calls multiple services and always yields a response. |
Request | JSON-RPC request. |
Response | JSON-RPC response. |
RpcError | Error information for response messages. |
Enums
Error | Enumeration of errors. |
Traits
Service | Trait for service handlers that maybe handle a request. |
Type Definitions
Result | Result type for service handler functions and internal library errors. |