Skip to main content

StreamEchoServer

Struct StreamEchoServer 

Source
pub struct StreamEchoServer<P: StreamProtocol> { /* private fields */ }
Expand description

Generic stream-based echo server that works with any stream protocol

This server can work with any protocol that implements StreamProtocol, such as TCP, Unix streams, etc.

§Examples

Basic server setup and running:

use echosrv::stream::{StreamConfig, StreamEchoServer};
use echosrv::common::EchoServerTrait;
use echosrv::tcp::TcpProtocol;
use std::time::Duration;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = StreamConfig {
        bind_addr: "127.0.0.1:8080".parse()?,
        max_connections: 100,
        buffer_size: 1024,
        read_timeout: Duration::from_secs(30),
        write_timeout: Duration::from_secs(30),
    };

    let server: StreamEchoServer<TcpProtocol> = StreamEchoServer::new(config);
    server.run().await?;
    Ok(())
}

Implementations§

Source§

impl<P: StreamProtocol> StreamEchoServer<P>
where P::Error: Into<EchoError> + Display,

Source

pub fn new(config: StreamConfig) -> Self

Creates a new stream-based echo server with the given configuration

Trait Implementations§

Source§

impl<P: StreamProtocol + Sync> EchoServerTrait for StreamEchoServer<P>
where P::Error: Into<EchoError> + Display, P::Stream: 'static,

Source§

fn run<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Starts the stream-based echo server and listens for connections

Source§

fn shutdown_signal(&self) -> Sender<()>

Returns a shutdown signal sender that can be used to gracefully shutdown the server

Auto Trait Implementations§

§

impl<P> !RefUnwindSafe for StreamEchoServer<P>

§

impl<P> !UnwindSafe for StreamEchoServer<P>

§

impl<P> Freeze for StreamEchoServer<P>

§

impl<P> Send for StreamEchoServer<P>
where P: Send,

§

impl<P> Sync for StreamEchoServer<P>
where P: Sync,

§

impl<P> Unpin for StreamEchoServer<P>
where P: Unpin,

§

impl<P> UnsafeUnpin for StreamEchoServer<P>

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