eve.aio.posix.tcp
Async TCP listener and connection primitives for POSIX platforms.
This module provides the POSIX implementation of TCP networking primitives using standard BSD sockets API. It works on Linux, BSD, and macOS.
Backpressure is modelled via an all-or-nothing send policy: send() either accepts all bytes (OK) or none (PRESSURE). A per-connection send queue buffers data until the kernel can drain it. See the Backpressure Specification for details.
Two send-queue allocation modes are available:
- Dynamic array (default) — may allocate per
send()call. - Pre-allocated ring buffer — set
preallocatedSendBufferforsteady-state zero-allocation operation.
See Also
Types 14
Connection-side buffer configuration.
size_t highWaterMarkMaximum queued bytes before `send` starts reporting pressure.size_t lowWaterMarkQueue threshold below which `onWritable` may fire again.size_t preallocatedSendBufferPre-allocate a fixed-capacity ring buffer for the send queue.Listener-side socket configuration.
int backlogPending accept backlog passed to `listen(2)`.Async TCP connection wrapper.
Wraps a non-blocking TCP socket and integrates with the Layer 1 event loop for async read/write operations with backpressure support.
TcpConnectionState _stateTcpConnection create(TcpConnectionConfig config = TcpConnectionConfig.init) static @trusted nothrowCreate a detached connection wrapper.bool isOpen() @property const @safe nothrow @nogcReport whether the wrapper currently owns an open socket.bool isWritable() @property const @safe nothrow @nogcReport whether the connection is currently writable from the caller's perspective.IpAddress remoteAddress() @property const @safe nothrow @nogcReport the remote address of the connection.IpAddress localAddress() @property const @safe nothrow @nogcReport the local address of the connection.AdoptResult adopt(ref EventLoop loop, Handle clientHandle) @trusted nothrowAdopt an already-accepted client socket.ConnectResult connect(ref EventLoop loop, scope const(char)[] host, ushort port, CancelToken cancel = CancelToken
.invalid) @trusted nothrowStart a non-blocking connection attempt.bool track(Coord)(ref Coord coordinator) @trusted nothrowTrack this connection for graceful shutdown.Async TCP listener wrapper.
Wraps a non-blocking TCP listening socket and integrates with the Layer 1 event loop for async accept operations.
TcpListenerState _stateTcpListener create(TcpListenerConfig config = TcpListenerConfig.init) static @trustedCreate a detached listener wrapper.void onConnection(ConnectionCallback callback) @property @trustedSet the high-level connection callback.bool isOpen() @property const @safe nothrow @nogcReport whether the listener currently owns an open socket.ushort localPort() @property const @safe nothrow @nogcReport the effective local port once listening.ListenResult listen(ref EventLoop loop, scope const(char)[] host, ushort port) @trustedStart listening on the requested endpoint.ConnectCallback onConnectDataCallback onDataWritableCallback onWritableCloseCallback onCloseErrorCallback onErrorEventLoop * _loopHandle _handleToken _tokenTcpConnectionConfig _configbool _readingPausedbool _watchingWritebool _awaitingWritablebool _closeDeliveredSendQueue _sendQueueSocketState _stateIpAddress _remoteAddressIpAddress _localAddressCancelToken _cancelTokenCancelToken _shutdownTokenbool _drainingConnectResult connect(ref EventLoop loop, scope const(char)[] host, ushort port, CancelToken cancel = CancelToken
.invalid) @trusted nothrowSendResult send(scope const(ubyte)[] data) @trustedthis(TcpConnectionConfig config)AcceptCallback onAcceptConnectionCallback onConnectionEventLoop * _loopHandle _handleToken _tokenTcpListenerConfig _configushort _localPortCancelToken _shutdownTokenbool _drainingthis(TcpListenerConfig config)Range adapter for iterating over addrinfo linked list.
addrinfo * currentFunctions 12
TcpConnectionConfig validated(TcpConnectionConfig config) pure @safe nothrow @nogcValidate a connection config, returning defaults if invalid.TcpListenerConfig validated(TcpListenerConfig config) pure @safe nothrow @nogcValidate a listener config, returning defaults if invalid.const(char) * copyStringz(scope const(char)[] source, scope char[] buffer) @trusted nothrowCopy a D string slice to a null-terminated C string buffer.bool wouldBlock(int value) pure @safe nothrow @nogcCheck if an errno value indicates the operation would block.int resolveErrno(int status) @trusted nothrowConvert getaddrinfo error to errno equivalent.ushort queryLocalPort(int fd) @trusted nothrowQuery the local port number for a bound socket.AddrinfoRange addrinfoRange(addrinfo * first) pure @safe nothrow @nogcCreate a range over an addrinfo linked list.