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
#![cfg_attr(feature = "docs", feature(doc_cfg, external_doc))]
#![cfg_attr(feature = "docs", doc(include = "../README.md"))]
#![cfg_attr(feature = "docs", warn(missing_docs))]
use bytes::Bytes;
use roa::preload::*;
use roa::{async_trait, Context, Endpoint, Result, State};
#[doc(no_inline)]
pub use jsonrpc_v2::*;
pub struct RpcEndpoint<R>(pub Server<R>);
#[async_trait(? Send)]
impl<'a, S, R> Endpoint<'a, S> for RpcEndpoint<R>
where
S: State,
R: Router + Sync + Send + 'static,
{
#[inline]
async fn call(&'a self, ctx: &'a mut Context<S>) -> Result {
let data = ctx.read().await?;
let resp = self.0.handle(Bytes::from(data)).await;
ctx.write_json(&resp)
}
}