Skip to content

Struct RpcFrame

Namespace: DotBoxD.Services.Transport
Assembly: DotBoxD.Services.dll

Owns one received wire frame. The frame can be backed by the legacy DotBoxD.Services.Buffers.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 `DotBoxD.Services.Buffers.Payload` or `DotBoxD.Services.Buffers.PooledBufferWriter` transfers only through `DotBoxD.Services.Transport.RpcFrame.DetachPayload`; otherwise callers dispose it through `DotBoxD.Services.Transport.RpcFrame.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.

public struct RpcFrame : IDisposable

IDisposable

object.Equals(object), object.Equals(object, object), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object, object), object.ToString()

public RpcFrame(Payload payload)

payload Payload

public RpcFrame(PooledBufferWriter writer)

writer PooledBufferWriter

public int Length { get; }

int

public ReadOnlyMemory<byte> Memory { get; }

ReadOnlyMemory<byte>

public Payload DetachPayload()

Payload

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public void Dispose()