Table of Contents

Class LengthHeaderMessageHandler

Namespace
StreamJsonRpc
Assembly
StreamJsonRpc.dll

A minimal header for each message that simply declares content length.

public class LengthHeaderMessageHandler : PipeMessageHandler, IJsonRpcMessageHandler, IDisposableObservable, IDisposable, IAsyncDisposable, IJsonRpcMessageBufferManager
Inheritance
LengthHeaderMessageHandler
Implements
Inherited Members

Remarks

The length is expressed as a big endian, 4 byte integer.

Constructors

LengthHeaderMessageHandler(IDuplexPipe, IJsonRpcMessageFormatter)

Initializes a new instance of the LengthHeaderMessageHandler class.

public LengthHeaderMessageHandler(IDuplexPipe pipe, IJsonRpcMessageFormatter formatter)

Parameters

pipe IDuplexPipe

The reader and writer to use for receiving/transmitting messages.

formatter IJsonRpcMessageFormatter

The formatter to use for message serialization.

LengthHeaderMessageHandler(PipeWriter?, PipeReader?, IJsonRpcMessageFormatter)

Initializes a new instance of the LengthHeaderMessageHandler class.

public LengthHeaderMessageHandler(PipeWriter? writer, PipeReader? reader, IJsonRpcMessageFormatter formatter)

Parameters

writer PipeWriter

The writer to use for transmitting messages.

reader PipeReader

The reader to use for receiving messages.

formatter IJsonRpcMessageFormatter

The formatter to use for message serialization.

LengthHeaderMessageHandler(Stream?, Stream?, IJsonRpcMessageFormatter)

Initializes a new instance of the LengthHeaderMessageHandler class.

public LengthHeaderMessageHandler(Stream? sendingStream, Stream? receivingStream, IJsonRpcMessageFormatter formatter)

Parameters

sendingStream Stream

The stream to use for transmitting messages.

receivingStream Stream

The stream to use for receiving messages.

formatter IJsonRpcMessageFormatter

The formatter to use to serialize JsonRpcMessage instances.

Methods

ReadCoreAsync(CancellationToken)

Reads a distinct and complete message, waiting for one if necessary.

protected override ValueTask<JsonRpcMessage?> ReadCoreAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

A token to cancel the read request.

Returns

ValueTask<JsonRpcMessage>

A task whose result is the received message. A null string indicates the stream has ended. An empty string should never be returned.

Write(JsonRpcMessage, CancellationToken)

Writes a message to the pipe.

protected override void Write(JsonRpcMessage content, CancellationToken cancellationToken)

Parameters

content JsonRpcMessage

The message to write.

cancellationToken CancellationToken

A token to cancel the transmission.

Remarks

Implementations may assume the method is never called before the previous call has completed. They can assume their caller will invoke FlushAsync(CancellationToken) on their behalf after writing is completed.