jsonrpc_ipc_server/
meta.rs1use std::path::Path;
2
3use crate::jsonrpc::futures::channel::mpsc;
4use crate::jsonrpc::Metadata;
5use crate::server_utils::session;
6
7pub struct RequestContext<'a> {
9 pub session_id: session::SessionId,
11 pub endpoint_addr: &'a Path,
13 pub sender: mpsc::UnboundedSender<String>,
15}
16
17pub trait MetaExtractor<M: Metadata>: Send + Sync + 'static {
19 fn extract(&self, context: &RequestContext) -> M;
21}
22
23impl<M, F> MetaExtractor<M> for F
24where
25 M: Metadata,
26 F: Fn(&RequestContext) -> M + Send + Sync + 'static,
27{
28 fn extract(&self, context: &RequestContext) -> M {
29 (*self)(context)
30 }
31}
32
33pub struct NoopExtractor;
35impl<M: Metadata + Default> MetaExtractor<M> for NoopExtractor {
36 fn extract(&self, _context: &RequestContext) -> M {
37 M::default()
38 }
39}