CellLifecycleServer

Struct CellLifecycleServer 

Source
pub struct CellLifecycleServer<S> { /* private fields */ }
Expand description

Server dispatcher for the #trait_name service.

Integrate this with an RpcSession by calling RpcSession::set_dispatcher and forwarding method_id/payload into [dispatch] or [dispatch_streaming].

Implementations§

Source§

impl<S: CellLifecycle + Send + Sync + 'static> CellLifecycleServer<S>

Source

pub fn new(service: S) -> Self

Create a new server with the given service implementation.

This automatically registers the service in the global registry on first invocation (subsequent calls are no-ops).

Source

pub async fn serve(self, transport: Transport) -> Result<(), RpcError>

Serve requests from the transport until the connection closes.

This is the main server loop. It reads frames from the transport, dispatches them to the appropriate method, and sends responses.

§Example
let server = CalculatorServer::new(CalculatorImpl);
server.serve(transport).await?;
Source

pub async fn serve_one(&self, transport: &Transport) -> Result<(), RpcError>

Serve a single request from the transport.

This is useful for testing or when you want to handle each request individually.

Source

pub async fn dispatch( &self, method_id: u32, request_payload: &[u8], ) -> Result<Frame, RpcError>

Dispatch a request frame to the appropriate method.

Returns a response frame on success for unary methods. For streaming methods, use dispatch_streaming instead.

Source

pub async fn dispatch_streaming( &self, method_id: u32, channel_id: u32, request_payload: &[u8], transport: &Transport, ) -> Result<(), RpcError>

Dispatch a streaming request to the appropriate method.

The method sends frames via the provided transport.

Source

pub fn into_session_dispatcher( self, transport: Transport, ) -> impl Fn(Frame) -> Pin<Box<dyn Future<Output = Result<Frame, RpcError>> + Send + 'static>> + Send + Sync + 'static

Create a dispatcher closure suitable for RpcSession::set_dispatcher.

This handles both unary and server-streaming methods:

  • Unary methods return a single response Frame.
  • Streaming methods require the request to be flagged NO_REPLY and are served by calling dispatch_streaming to emit DATA/EOS frames on the provided transport.

To ensure streaming calls work correctly, use rapace’s generated streaming clients (they set NO_REPLY automatically).

Auto Trait Implementations§

§

impl<S> Freeze for CellLifecycleServer<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for CellLifecycleServer<S>
where S: RefUnwindSafe,

§

impl<S> Send for CellLifecycleServer<S>
where S: Send,

§

impl<S> Sync for CellLifecycleServer<S>
where S: Sync,

§

impl<S> Unpin for CellLifecycleServer<S>
where S: Unpin,

§

impl<S> UnwindSafe for CellLifecycleServer<S>
where S: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> TimeoutExt for T

Source§

fn timeout(self, duration: Duration) -> Timeout<Self>

Requires a Future or Stream to complete before the specific duration has elapsed. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more