1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//!
//! ## roa::jsonrpc
//!
//! This module provides a json rpc endpoint.
//!
//! ### Example
//!
//! ```rust,no_run
//! use roa::App;
//! use roa::jsonrpc::{RpcEndpoint, Data, Error, Params, Server};
//! use roa::tcp::Listener;
//! use tracing::info;
//!
//! #[derive(serde::Deserialize)]
//! struct TwoNums {
//! a: usize,
//! b: usize,
//! }
//!
//! async fn add(Params(params): Params<TwoNums>) -> Result<usize, Error> {
//! Ok(params.a + params.b)
//! }
//!
//! async fn sub(Params(params): Params<(usize, usize)>) -> Result<usize, Error> {
//! Ok(params.0 - params.1)
//! }
//!
//! async fn message(data: Data<String>) -> Result<String, Error> {
//! Ok(String::from(&*data))
//! }
//!
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//! let rpc = Server::new()
//! .with_data(Data::new(String::from("Hello!")))
//! .with_method("sub", sub)
//! .with_method("message", message)
//! .finish_unwrapped();
//!
//! let app = App::new().end(RpcEndpoint(rpc));
//! app.listen("127.0.0.1:8000", |addr| {
//! info!("Server is listening on {}", addr)
//! })?
//! .await?;
//! Ok(())
//! }
//! ```
use Bytes;
pub use *;
use cratePowerBody;
use crate::;
/// A wrapper for [`jsonrpc_v2::Server`], implemented [`roa::Endpoint`].
///
/// [`jsonrpc_v2::Server`]: https://docs.rs/jsonrpc-v2/0.10.1/jsonrpc_v2/struct.Server.html
/// [`roa::Endpoint`]: https://docs.rs/roa/0.6.0/roa/trait.Endpoint.html
;