Table of Contents

Class HeaderDelimitedMessageHandler

Namespace
StreamJsonRpc
Assembly
StreamJsonRpc.dll

Adds headers before each text message transmitted over a stream.

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

Remarks

Constructors

HeaderDelimitedMessageHandler(IDuplexPipe, IJsonRpcMessageFormatter)

Initializes a new instance of the HeaderDelimitedMessageHandler class.

public HeaderDelimitedMessageHandler(IDuplexPipe pipe, IJsonRpcMessageFormatter formatter)

Parameters

pipe IDuplexPipe

The duplex pipe to use for exchanging messages.

formatter IJsonRpcMessageFormatter

The formatter to use to serialize JsonRpcMessage instances.

HeaderDelimitedMessageHandler(PipeWriter?, PipeReader?, IJsonRpcMessageFormatter)

Initializes a new instance of the HeaderDelimitedMessageHandler class.

public HeaderDelimitedMessageHandler(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 to serialize JsonRpcMessage instances.

HeaderDelimitedMessageHandler(Stream)

Initializes a new instance of the HeaderDelimitedMessageHandler class.

public HeaderDelimitedMessageHandler(Stream duplexStream)

Parameters

duplexStream Stream

The stream to use for transmitting and receiving messages.

HeaderDelimitedMessageHandler(Stream, IJsonRpcMessageFormatter)

Initializes a new instance of the HeaderDelimitedMessageHandler class.

public HeaderDelimitedMessageHandler(Stream duplexStream, IJsonRpcMessageFormatter formatter)

Parameters

duplexStream Stream

The stream to use for exchanging messages.

formatter IJsonRpcMessageFormatter

The formatter to use to serialize JsonRpcMessage instances.

HeaderDelimitedMessageHandler(Stream?, Stream?)

Initializes a new instance of the HeaderDelimitedMessageHandler class.

public HeaderDelimitedMessageHandler(Stream? sendingStream, Stream? receivingStream)

Parameters

sendingStream Stream

The stream to use for transmitting messages.

receivingStream Stream

The stream to use for receiving messages.

HeaderDelimitedMessageHandler(Stream?, Stream?, IJsonRpcMessageFormatter)

Initializes a new instance of the HeaderDelimitedMessageHandler class.

public HeaderDelimitedMessageHandler(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.

Properties

Encoding

Gets or sets the encoding to use for transmitted messages.

public Encoding Encoding { get; set; }

Property Value

Encoding

Exceptions

NotSupportedException

Thrown if the Formatter in use does not implement IJsonRpcMessageTextFormatter.

SubType

Gets or sets the value to use as the subtype in the Content-Type header (e.g. "application/SUBTYPE").

public string SubType { get; set; }

Property Value

string

The default value is "jsonrpc".

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.