Crate lstngrp

Source
Expand description

A ListenGroup collects a set of network listeners, and the connections they spawn, into a single abstraction, allowing them to easily share common logic and data.

§Overview

The ListenGroup is the central object in this crate. After instantiation of a ListenGroup the application can call ListenGroup::add_listener() to register new (network) listeners to it.

When one of the listeners has received a connection, it calls the connected() trait method of a GroupHandler implementor (which was passed to the ListenGroup on its creation).

The GroupHandler::connected() implementor must return, among other things, an object that implements ConnHandler, which will be called (through its ConnHandler::run() method), to handle the connection.

§Per-listener context

The ListenGroup uses a single GroupHandler object for all listeners. If the application needs per-listener-specific data, it can use an associative container (like a HashMap) in its GroupHandler object to map listeners’ unique identifiers to listener-specific contexts in the container. See the per_listener_ctx example in lstngrp’s repository for an example implementation of this.

Structs§

ArcIdUsize
An atomically referenced counted version of IdUsize.
CInfo
Information returned about a connection when a listen group’s current state is inspected.
ConnInfo
Context passed to GroupHandler::connected() used to pass connection (metadata) information.
ConnOutcome
LInfo
Information returned about registered listeners when getting a group listener’s current state.
ListenGroup
Representation of a group of listeners.
ListenerSpec
Builder for listeners to be added to a ListenGroup.

Enums§

Listener
Wrapper around common protocol-specific listener specifiers.
ProtWrapError
Crate-specific errors.
SockAddr
Abstraction around std’s SocketAddr (for IPv4/IPv6) and tokio’s (unix local domain) SocketAddr.
Stream
Representation of a stream acting as a server end-point (passively established connection).

Traits§

ConnHandler
Implemented on types that should process client connections.
GroupHandler
Group listener handler.

Attribute Macros§

async_trait