Struct protosocket_server::Server

source ·
pub struct Server { /* private fields */ }

Implementations§

source§

impl Server

source

pub fn new() -> Result<Self>

source

pub fn register_service_listener<Connector: ServerConnector>( &mut self, listener: TcpListener, server_state: Connector, ) -> Result<ConnectionServer<Connector>>

listener must be configured non_blocking

see register_multithreaded_service_listener for a configuration that has multiple IO drivers for the service.

source

pub fn register_multithreaded_service_listener<Connector: ServerConnector + Clone>( &mut self, listener: TcpListener, server_state: Connector, thread_count: usize, ) -> Result<Vec<ConnectionServer<Connector>>>

Configure a single tcp listener to vend connections to separate IO drivers (one driver per connection server).

Each of the returned ConnectionServers can be spawned onto distinct threads, and their connections will be segregated. Connections are vended to the backing threads in round-robin fashion. There is no work stealing between the ConnectionServers - they are fully distinct.

ConnectionServers can reuse the same task work pool if desired, or they can use separate async work pools. What works best for you is what you should do.

listener must be configured non_blocking

source

pub fn serve(self) -> Result<()>

Dedicate a thread to your connection frontend.

Auto Trait Implementations§

§

impl Freeze for Server

§

impl !RefUnwindSafe for Server

§

impl Send for Server

§

impl Sync for Server

§

impl Unpin for Server

§

impl !UnwindSafe for Server

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, 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>,

§

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>,

§

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.