Struct RawTCPServer

Source
pub struct RawTCPServer<H, F>
where H: Fn(Vec<u8>) -> F + Send + Sync + 'static, F: Future<Output = Result<RawTCPResponse>> + Send + 'static,
{ /* private fields */ }
Expand description

Server to handle TCP requests.

When the .listen() method is called the server starts accepting (possibly simultaneous) connections from any number of clients.

When a client sends a message, the server will invoke the given request handle to process the request, and take an action based on the handler return type (see RawTCPResponse for a list of possible actions).

If the client closes the connection without warning, the server will simply drop that connection.

If the client sends a malformed message (without or with a wrong length header), the server can potentially read too little data, or hang waiting for data to read.

Implementations§

Source§

impl<H, F> RawTCPServer<H, F>
where H: Fn(Vec<u8>) -> F + Send + Sync + 'static, F: Future<Output = Result<RawTCPResponse>> + Send + 'static,

Source

pub fn new(host: impl Into<String>, port: u16, handler: H) -> Arc<Self>

Create a new server listening to the given host and port, processing requests with handler.

Does not actually start listening, for that you need to call listen.

The socket will be freed when the struct is dropped.

Source

pub fn with_inactivity_timeout(self: Arc<Self>, timeout_ms: u64) -> Arc<Self>

Instructs the server to quit after the given amount of time without any request.

Note that requests that take longer than the timeout amount, will be dropped in the middle of processing

Source

pub async fn listen(self: Arc<Self>)

Start accepting connections from clients, processing and answering messages.

If multiple servers are started on the same port, this function will panic.

Auto Trait Implementations§

§

impl<H, F> !Freeze for RawTCPServer<H, F>

§

impl<H, F> RefUnwindSafe for RawTCPServer<H, F>
where H: RefUnwindSafe,

§

impl<H, F> Send for RawTCPServer<H, F>

§

impl<H, F> Sync for RawTCPServer<H, F>

§

impl<H, F> Unpin for RawTCPServer<H, F>
where H: Unpin,

§

impl<H, F> UnwindSafe for RawTCPServer<H, F>
where H: 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