pub struct RpcServer<C: Codec = BincodeCodec> { /* private fields */ }Implementations§
Source§impl RpcServer<BincodeCodec>
impl RpcServer<BincodeCodec>
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/rpc_client_server.rs (line 58)
51async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
52 println!("[Server] Starting RPC server");
53
54 let config = SharedMemoryConfig::default();
55 let transport = SharedMemoryFrameTransport::create_server(SERVICE_NAME, config)?;
56 let channel = Arc::new(MessageChannelAdapter::new(transport));
57
58 let server = RpcServer::new();
59
60 server.register_typed("add", |req: AddRequest| async move {
61 println!("[Server] add({}, {})", req.a, req.b);
62 Ok(AddResponse {
63 result: req.a + req.b,
64 })
65 });
66
67 server.register_typed("echo", |req: EchoRequest| async move {
68 println!("[Server] echo(\"{}\")", req.message);
69 let len = req.message.len();
70 Ok(EchoResponse {
71 message: req.message,
72 length: len,
73 })
74 });
75
76 println!("[Server] Registered {} handlers", server.handler_count());
77 println!("[Server] Waiting for requests\n");
78
79 server.serve(channel).await?;
80
81 Ok(())
82}Source§impl<C: Codec + Clone + Default + 'static> RpcServer<C>
impl<C: Codec + Clone + Default + 'static> RpcServer<C>
pub fn with_codec(codec: C) -> Self
pub fn register(&self, handler: Arc<dyn Handler<C>>)
pub fn register_fn<F, Fut>(&self, method: impl Into<String>, func: F)
Sourcepub fn register_typed<Req, Resp, F, Fut>(
&self,
method: impl Into<String>,
func: F,
)
pub fn register_typed<Req, Resp, F, Fut>( &self, method: impl Into<String>, func: F, )
Examples found in repository?
examples/rpc_client_server.rs (lines 60-65)
51async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
52 println!("[Server] Starting RPC server");
53
54 let config = SharedMemoryConfig::default();
55 let transport = SharedMemoryFrameTransport::create_server(SERVICE_NAME, config)?;
56 let channel = Arc::new(MessageChannelAdapter::new(transport));
57
58 let server = RpcServer::new();
59
60 server.register_typed("add", |req: AddRequest| async move {
61 println!("[Server] add({}, {})", req.a, req.b);
62 Ok(AddResponse {
63 result: req.a + req.b,
64 })
65 });
66
67 server.register_typed("echo", |req: EchoRequest| async move {
68 println!("[Server] echo(\"{}\")", req.message);
69 let len = req.message.len();
70 Ok(EchoResponse {
71 message: req.message,
72 length: len,
73 })
74 });
75
76 println!("[Server] Registered {} handlers", server.handler_count());
77 println!("[Server] Waiting for requests\n");
78
79 server.serve(channel).await?;
80
81 Ok(())
82}pub fn register_stream<Req, Item, F, S>( &self, method: impl Into<String>, func: F, )
pub fn register_stream_fn<F, Fut>(&self, method: impl Into<String>, func: F)
pub async fn handle_message<T: MessageChannel<C>>( &self, message: Message<C>, transport: &T, ) -> Option<Message<C>>
Sourcepub async fn serve<T: MessageChannel<C>>(&self, transport: Arc<T>) -> Result<()>
pub async fn serve<T: MessageChannel<C>>(&self, transport: Arc<T>) -> Result<()>
Examples found in repository?
examples/rpc_client_server.rs (line 79)
51async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
52 println!("[Server] Starting RPC server");
53
54 let config = SharedMemoryConfig::default();
55 let transport = SharedMemoryFrameTransport::create_server(SERVICE_NAME, config)?;
56 let channel = Arc::new(MessageChannelAdapter::new(transport));
57
58 let server = RpcServer::new();
59
60 server.register_typed("add", |req: AddRequest| async move {
61 println!("[Server] add({}, {})", req.a, req.b);
62 Ok(AddResponse {
63 result: req.a + req.b,
64 })
65 });
66
67 server.register_typed("echo", |req: EchoRequest| async move {
68 println!("[Server] echo(\"{}\")", req.message);
69 let len = req.message.len();
70 Ok(EchoResponse {
71 message: req.message,
72 length: len,
73 })
74 });
75
76 println!("[Server] Registered {} handlers", server.handler_count());
77 println!("[Server] Waiting for requests\n");
78
79 server.serve(channel).await?;
80
81 Ok(())
82}pub fn spawn_handler<T: MessageChannel<C> + 'static>( &self, transport: T, ) -> ServerHandle
Sourcepub fn handler_count(&self) -> usize
pub fn handler_count(&self) -> usize
Examples found in repository?
examples/rpc_client_server.rs (line 76)
51async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
52 println!("[Server] Starting RPC server");
53
54 let config = SharedMemoryConfig::default();
55 let transport = SharedMemoryFrameTransport::create_server(SERVICE_NAME, config)?;
56 let channel = Arc::new(MessageChannelAdapter::new(transport));
57
58 let server = RpcServer::new();
59
60 server.register_typed("add", |req: AddRequest| async move {
61 println!("[Server] add({}, {})", req.a, req.b);
62 Ok(AddResponse {
63 result: req.a + req.b,
64 })
65 });
66
67 server.register_typed("echo", |req: EchoRequest| async move {
68 println!("[Server] echo(\"{}\")", req.message);
69 let len = req.message.len();
70 Ok(EchoResponse {
71 message: req.message,
72 length: len,
73 })
74 });
75
76 println!("[Server] Registered {} handlers", server.handler_count());
77 println!("[Server] Waiting for requests\n");
78
79 server.serve(channel).await?;
80
81 Ok(())
82}Trait Implementations§
Auto Trait Implementations§
impl<C> Freeze for RpcServer<C>where
C: Freeze,
impl<C = BincodeCodec> !RefUnwindSafe for RpcServer<C>
impl<C> Send for RpcServer<C>
impl<C> Sync for RpcServer<C>
impl<C> Unpin for RpcServer<C>where
C: Unpin,
impl<C = BincodeCodec> !UnwindSafe for RpcServer<C>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more