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
This is based on the language server protocol spec: https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#base-protocol.
Constructors
HeaderDelimitedMessageHandler(IDuplexPipe, IJsonRpcMessageFormatter)
Initializes a new instance of the HeaderDelimitedMessageHandler class.
public HeaderDelimitedMessageHandler(IDuplexPipe pipe, IJsonRpcMessageFormatter formatter)
Parameters
pipe
IDuplexPipeThe duplex pipe to use for exchanging messages.
formatter
IJsonRpcMessageFormatterThe 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
PipeWriterThe writer to use for transmitting messages.
reader
PipeReaderThe reader to use for receiving messages.
formatter
IJsonRpcMessageFormatterThe formatter to use to serialize JsonRpcMessage instances.
HeaderDelimitedMessageHandler(Stream)
Initializes a new instance of the HeaderDelimitedMessageHandler class.
public HeaderDelimitedMessageHandler(Stream duplexStream)
Parameters
duplexStream
StreamThe 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
StreamThe stream to use for exchanging messages.
formatter
IJsonRpcMessageFormatterThe 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
StreamThe stream to use for transmitting messages.
receivingStream
StreamThe 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
StreamThe stream to use for transmitting messages.
receivingStream
StreamThe stream to use for receiving messages.
formatter
IJsonRpcMessageFormatterThe 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
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
CancellationTokenA 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
JsonRpcMessageThe message to write.
cancellationToken
CancellationTokenA 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.