Struct ServerConnectionHandler

Source
pub struct ServerConnectionHandler<StateType: Debug + Clone + Send + 'static> { /* private fields */ }
Expand description

Abstracts out, from servers, the connection handling so to enable the “Protocol Stack Composition” pattern:
Binds to a network listening interface and port and starts a network event loop for accepting connections, supplying them to an internal ConnectionChannel (while also allowing manually fed connections).

Implementations§

Source§

impl<StateType: Debug + Clone + Send + 'static> ServerConnectionHandler<StateType>

Source

pub async fn new( listening_interface: &str, listening_port: u16, connection_initial_state: StateType, ) -> Result<Self, Box<dyn Error + Sync + Send>>

Creates a new instance of a server, binding to the specified listening_interface and listening_port.
Incoming connections are [feed()] as they arrive – but you can also do so manually, by calling the mentioned method.

Source

pub fn connection_receiver( &mut self, ) -> Option<Receiver<SocketConnection<StateType>>>

Consumes and returns the tokio::sync::mpsc::Receiver which will be able to provide connections previously sent through Self::feed_connection().
The receiver blocks while there are no connections available and yields None if self is dropped – meaning no more connections will be feed through the channel.

Source

pub async fn feed_connection( &self, socket_connection: SocketConnection<StateType>, ) -> Result<(), ReceiverDroppedErr<SocketConnection<StateType>>>

Delivers connection to the receiver obtained via a call to Self::connection_receiver(), blocking if there are previous connections awaiting delivery

Source

pub async fn shutdown(self)

“Shutdown” the connection listener for this server, releasing the bind to the listening interface and port and bailing out from the network event loop.
Any consumers using Self::connection_receiver() will be notified with a None last element.

Auto Trait Implementations§

§

impl<StateType> Freeze for ServerConnectionHandler<StateType>

§

impl<StateType> !RefUnwindSafe for ServerConnectionHandler<StateType>

§

impl<StateType> Send for ServerConnectionHandler<StateType>

§

impl<StateType> Sync for ServerConnectionHandler<StateType>

§

impl<StateType> Unpin for ServerConnectionHandler<StateType>

§

impl<StateType> !UnwindSafe for ServerConnectionHandler<StateType>

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V