TracingConfigServer

Struct TracingConfigServer 

Source
pub struct TracingConfigServer<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: TracingConfig + Send + Sync + 'static> TracingConfigServer<S>

Source

pub fn new(service: S) -> Self

Create a new server with the given service implementation.

Source

pub async fn serve<T: Transport + 'static>( self, transport: Arc<T>, ) -> 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<T: Transport + 'static>( &self, transport: &T, ) -> 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<T: Transport + 'static>( &self, method_id: u32, channel_id: u32, request_payload: &[u8], transport: &T, ) -> Result<(), RpcError>

Dispatch a streaming request to the appropriate method.

The method sends frames via the provided transport.

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<S> UnwindSafe for TracingConfigServer<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, 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