Table of Contents

Namespace DotBoxD.Services.Transport

Classes

RpcTransportExtensions
SingleConnectionServerTransport

Server transport that accepts one already-established connection.

SingleConnectionTransport

Client transport over an already-established connection.

StreamConnection

DotBoxD connection over a duplex stream, including named pipe streams.

Structs

RpcFrame

Owns one received wire frame. The frame can be backed by the legacy Payload owner or by a pooled writer transferred by a low-allocation transport.

This is a value type and may be copied. Ownership of the underlying Payload or PooledBufferWriter transfers only through DetachPayload(); otherwise callers dispose it through Dispose(). Follow the boolean contract returned by RpcPeerFrameProcessor.ShouldDisposeAsync inside RpcPeerReadLoop: true means the caller owns the frame, false means the read loop retained ownership (for example, a StreamItem). Both backing owners are idempotent, so double-dispose is safe.

Interfaces

IRpcChannel

A duplex, framed, bidirectional channel — the transport unit a RpcPeer runs on. Responses flow back over the same channel, so it is always bidirectional even when the call direction is one-way. Transports return this directly; implement it to add a custom transport.

IRpcFrameChannel

Optional low-allocation transport contract for channels that can transfer ownership of complete pooled frames instead of copying them into a new Payload.

IRpcValueTaskChannel

Optional low-allocation transport contract for channels that can complete send/receive operations without allocating a Task for each frame.

IServerTransport

Represents a server-side transport that accepts incoming connections.

ITransport

Represents a transport layer for establishing connections.

Enums

QueueFullMode

Controls what a bounded DotBoxD queue does when it is full.