StreamJsonRpc
Reserved to be used by the compiler for tracking metadata.
This class should not be used by developers in source code.
This definition is provided by the IsExternalInit NuGet package (https://www.nuget.org/packages/IsExternalInit).
Please see https://github.com/manuelroemer/IsExternalInit for more information.
Synchronizes activities as set by the class over RPC.
Initializes a new instance of the class.
Initializes a new instance of the class.
The to use for creating activities.
A collection of extension methods to support special awaiters.
Gets an awaiter that switches the caller to execute on the specified .
The to switch to.
The value to await on.
The awaiter for .
The to switch the caller's context to.
Initializes a new instance of the struct.
The to switch the caller's context to.
Gets a value indicating whether the caller is already on the desired context.
We always return because we use this to invoke server methods and we *always* want to
yield before invoking them, even if this is the default SynchronizationContext that the caller is on.
Does nothing.
Schedules a continuation on the specified in the constructor.
The delegate to execute on the .
Common RPC method transform functions that may be supplied to
by way of .
Gets a function that converts a given string from PascalCase to camelCase.
Gets a function that prepends a particular string in front of any RPC method name.
The prefix to prepend to any method name.
This value must not be null.
When this value is the empty string, no transformation is performed by the returned function.
The transform function.
Synchronizes activities as set by the class over RPC.
Gets or sets the contextual tracestate value.
Gets or sets the that will receive the activity transfer, start and stop events .
Determines the name to give to the activity started when dispatching an incoming RPC call.
The inbound RPC request.
The name of the activity.
The default implementation uses as the activity name.
Identifies a reason for a stream disconnection.
An error occurred while accessing the stream.
A syntax or schema error while reading a JSON-RPC packet occurred.
The instance was disposed.
The underlying transport was closed by the remote party.
A fatal exception was thrown in a local method that was requested by the remote party.
An extensibility point was leveraged locally and broke the contract.
The remote party violated the JSON-RPC protocol.
Describes the reason behind a disconnection with the remote party.
Initializes a new instance of the class.
The description.
The reason for disconnection.
Initializes a new instance of the class.
The description.
The reason for disconnection.
The exception.
Initializes a new instance of the class.
The description.
The reason for disconnection.
The last message.
Initializes a new instance of the class.
The description.
The reason for disconnection.
The last message.
The exception.
Gets the description.
Gets the reason.
Gets the last message.
Gets the exception.
Enumerates the exception handling behaviors that are built into the class.
Exceptions thrown by the server are serialized as the simple class
and the default error code is .
The client experiences a whose property
is the deserialized .
Exceptions thrown by the server are serialized via the mechanism and captures more detail,
using the error code .
These are deserialized with the original exception types as inner exceptions of the thrown at the client.
The is also set to an instance of that resembles the inner exception tree.
Contains security-related settings that influence how errors are serialized and deserialized.
The recommended settings for use when communicating with a trusted party.
The recommended settings for use when communicating with an untrusted party.
Initializes a new instance of the class.
The maximum number of nested errors to serialize or deserialize.
Gets the maximum number of nested errors to serialize or deserialize.
The default value is 50.
This can help mitigate DoS attacks from unbounded recursion that otherwise error deserialization
becomes perhaps uniquely vulnerable to since the data structure allows recursion.
Tests whether a type can be deserialized as part of deserializing an exception.
The type that may be deserialized.
if the type is safe to deserialize; otherwise.
The default implementation returns for all types in -based instances;
or for -based instances will return for
-derived types that are expected to be safe to deserialize.
-derived types that may deserialize data that would be unsafe coming from an untrusted party should
consider the passed to their deserializing constructor and skip deserializing of potentitally
dangerous data when includes the flag.
An exception thrown when a deserialized message has a bad header.
Initializes a new instance of the class.
The message.
Initializes a new instance of the class.
The message.
The inner exception.
Initializes a new instance of the class.
Serialization info.
Streaming context.
An exception used to fault a returned from a request
when the request could not be completed or the response cannot be received because the connection dropped.
Initializes a new instance of the class.
Initializes a new instance of the class.
The message that describes the error.
Initializes a new instance of the class.
The error message that explains the reason for the exception.
The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
Initializes a new instance of the class.
Serialization info.
Streaming context.
An exception that may be thrown within a locally invoked server method, and carries with it data that influences the JSON-RPC error message's error object.
Initializes a new instance of the class.
Initializes a new instance of the class.
The error message that explains the reason for the exception.
Initializes a new instance of the class.
The error message that explains the reason for the exception.
The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
Gets or sets the value for the error.data property.
Gets or sets the value for the error.code property.
The default value is set to a special general error code: .
This may be set to a more meaningful error code for the application that allows the client to programatically respond to the error condition.
Application-defined values should avoid the [-32768, -32000] range, which is reserved for the JSON-RPC protocol itself.
Remote RPC exception that indicates that the server target method threw an exception.
The details of the target method exception can be found on the and properties.
Initializes a new instance of the class.
The message.
The value of the error.code field in the response.
The value of the error.data field in the response.
Initializes a new instance of the class.
The message.
The value of the error.code field in the response.
The value of the error.data field in the response.
The value of the error.data field in the response, deserialized according to .
Initializes a new instance of the class.
The message.
The value of the error.code field in the response.
The deserialized exception thrown by the RPC server.
Initializes a new instance of the class.
Serialization info.
Streaming context.
Gets the value of the error.code field in the response.
The value may be any integer.
The value may be , which is a general value used for exceptions thrown on the server when the server does not give an app-specific error code.
Remote RPC exception that indicates that the requested target method was not found on the server.
Check the exception message for the reasons why the method was not found. It's possible that
there was a method with the matching name, but it was not public, had ref or out params, or
its arguments were incompatible with the arguments supplied by the client.
Initializes a new instance of the class
with supplied message and target method.
Exception message describing why the method was not found.
Target method that was not found.
The value of the error.code field in the response.
The value of the error.data field in the response.
The value of the error.data field in the response, deserialized according to .
Initializes a new instance of the class.
Serialization info.
Streaming context.
Gets the name of the target method that was not found.
Gets the value of the error.code field in the response.
The value is typically either or .
Base exception class for any exception that happens while receiving an JSON-RPC communication.
Initializes a new instance of the class.
The message that describes the error.
Initializes a new instance of the class.
The error message that explains the reason for the exception.
The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
Initializes a new instance of the class.
Serialization info.
Streaming context.
Gets or sets the value of the error.code field in the response, if one is available.
Gets or sets the error.data value in the error response, if one was provided.
Depending on the used, the value of this property, if any,
may be a or a deserialized object.
If a deserialized object, the type of this object is determined by .
The default implementation of this method produces a object.
Gets or sets the error.data value in the error response, if one was provided.
The type of this object is determined by .
The default implementation of this method produces a object.
An exception thrown from back to the client from various request methods when the server failed to serialize the response.
This exception comes from the error code.
Initializes a new instance of the class.
Initializes a new instance of the class.
Serialization info.
Streaming context.
An exception thrown from
when the argument cannot be deserialized to the requested type, typically due to an incompatibility or exception thrown from the deserializer.
Initializes a new instance of the class.
The name of the argument from the JSON-RPC request that failed to deserialize, if available.
The 0-based index of the argument from the JSON-RPC request that failed to deserialize, if available.
The to which deserialization of the argument was attempted.
The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
Initializes a new instance of the class.
Initializes a new instance of the class.
Initializes a new instance of the class.
Serialization info.
Serialization context.
Gets the name of the argument from the JSON-RPC request that failed to deserialize, if available.
This value will be when the JSON-RPC request uses positional arguments.
Gets the 0-based index of the argument from the JSON-RPC request that failed to deserialize, if available.
This value will be when the JSON-RPC request uses named arguments.
Gets the to which deserialization of the argument was attempted.
Initializes a new instance of the class.
Initializes a new instance of the class.
An exception thrown when an incoming JSON-RPC message could not be recognized as conforming to any known JSON-RPC message.
Initializes a new instance of the class.
Initializes a new instance of the class.
The error message that explains the reason for the exception.
Initializes a new instance of the class.
The error message that explains the reason for the exception.
The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
Initializes a new instance of the class.
Serialization info.
Streaming context.
A base class for implementations
that support exotic types.
Backing field for the property.
The we use to support method arguments.
The helper for marshaling pipes as RPC method arguments.
The tracker we use to support transmission of types.
The helper for marshaling in RPC method arguments or return values.
Initializes a new instance of the class.
An interface implemented by all the -derived nested types (, , ) to allow them to carry arbitrary top-level properties on behalf of the application.
Gets or sets the top-level property bag for this message.
Gets or sets the that may be used to establish out of band communication (e.g. marshal arguments).
Gets the that is associated with this formatter.
This field is used to create the instance that will send the progress notifications when server reports it.
The property helps to ensure that only one instance is associated with this formatter.
Gets the instance containing useful methods to help on the implementation of message formatters.
Gets the helper for marshaling pipes as RPC method arguments.
Gets the helper for marshaling in RPC method arguments or return values.
Gets the that is present on the method that may be invoked to serve the incoming request, when applicable.
Gets the helper for marshaling in RPC method arguments or return values.
Gets the message whose arguments are being deserialized.
Disposes managed and native resources held by this instance.
if being disposed; if being finalized.
Sets up state to track deserialization of a message.
A value to dispose of when deserialization has completed.
Sets up state to track serialization of a message.
The message being serialized.
A value to dispose of when serialization has completed.
Tracks deserialization of a message.
Initializes a new instance of the struct.
The formatter.
The message being deserialized.
The signature of the method that will be invoked for the incoming request, if applicable.
Clears deserialization state.
Tracks serialization of a message.
Initializes a new instance of the struct.
The formatter.
The message being serialized.
Clears serialization state.
A base class for top-level property bags that should be declared in the derived formatter class.
Initializes a new instance of the class.
A value indicating whether this bag belongs to an outbound message.
Gets a dictionary of top-level properties that should be serialized.
Thrown if called on an inbound message.
Deserializes the value of a top-level property.
The type of object expected by the caller.
The name of the top-level property.
Receives the value of the property.
A value indicating whether the property exists.A formatter-specific exception may be thrown if the property exists but the value cannot be deserialized to a .
A base class for formatter-specific implementations.
Gets or sets the top-level property bag for this message.
Creates a new instance of the top-level property bag for this message.
When overridden by derived types, clears references to all buffers that may have been used for deserialization.
A base class for formatter-specific implementations.
Gets or sets the top-level property bag for this message.
A base class for formatter-specific implementations.
Gets or sets the top-level property bag for this message.
Adds headers before each text message transmitted over a stream.
This is based on the language server protocol spec:
https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#base-protocol.
The default encoding to use when writing content,
and to assume as the encoding when reading content
that doesn't have a header identifying its encoding.
The encoding to use when writing/reading headers.
Although the spec dictates using ASCII encoding, that's equivalent to UTF8
for the characters we expect to be sending and receiving,
and portable profiles don't have ASCII available.
Also note that when writing we use the encoding set by this field,
but when reading, we have highly optimized code that hard-codes the assumption
that each character is one byte.
The sent to the to write the message.
Backing field for .
Initializes a new instance of the class.
The writer to use for transmitting messages.
The reader to use for receiving messages.
The formatter to use to serialize instances.
Initializes a new instance of the class.
The duplex pipe to use for exchanging messages.
The formatter to use to serialize instances.
Initializes a new instance of the class.
The stream to use for exchanging messages.
The formatter to use to serialize instances.
Initializes a new instance of the class.
The stream to use for transmitting and receiving messages.
Initializes a new instance of the class.
The stream to use for transmitting messages.
The stream to use for receiving messages.
Initializes a new instance of the class.
The stream to use for transmitting messages.
The stream to use for receiving messages.
The formatter to use to serialize instances.
Gets or sets the value to use as the subtype in the Content-Type header (e.g. "application/SUBTYPE").
The default value is "jsonrpc".
Gets or sets the encoding to use for transmitted messages.
Thrown if the in use does not implement .
Gets the formatter to use to serialize instances as text.
Throws if the formatter is not a text-based formatter.
Extracts the content encoding from a Content-Type header.
The value of the Content-Type header.
The Encoding, if the header specified one; otherwise .
Synchronizes contextual activities between an RPC client and server
consistent with the W3C Trace Context specification.
Implementations are required to be thread-safe.
Applies a contextual activity to an outbound RPC request.
The outbound RPC request.
This method may be invoked regardless of whether a contextual activity exists.
Applies an activity described in an incoming RPC request to the current context so the dispatched method can inherit it.
The inbound RPC request.
An optional disposable object that can revert the effects taken by this method at the conclusion of the dispatched RPC server method.
This method may be invoked regardless of whether an activity is identified in the incoming request.
The may be referenced by the returned value if necessary.
Defines an extensibility point by which RPC methods may be canceled using .
A cancellation strategy can be set on the property.The default implementation is defined by .Implementations must be thread-safe.
Translates a canceled that was used in an outbound RPC request into terms that
the RPC server can understand.
The ID of the canceled request.
Every call to this method is followed by a subsequent call to .
Cleans up any state associated with an earlier call.
The ID of the canceled request.
This method is invoked by when the response to a canceled request has been received.
It *may* be invoked for requests for which a prior call to was *not* made, due to timing.
But it should never be invoked concurrently with for the same .
Associates the from an incoming request with the
that is used for the passed to that RPC method so it can be canceled later.
The ID of the incoming request.
A means to cancel the that will be used when invoking the RPC server method.
Implementations are expected to store the arguments in a dictionary so the implementing strategy can cancel it when the trigger occurs.
The trigger is outside the scope of this interface and will vary by implementation.
Cleans up any state associated with an earlier call.
The ID of the request that has been fulfilled.
Implementations are expected to release memory allocated by a prior call to .
This method should *not* dispose of the received previously as owns its lifetime.
An interface that offers serialization to an and asynchronous deserialization.
Deserializes a .
The reader to deserialize from.
A cancellation token.
The deserialized .
An interface that offers serialization to an and asynchronous deserialization
and formats messages as JSON (text).
Deserializes a sequence of bytes to a .
The reader to deserialize from.
The encoding to read the bytes from with. Must not be null.
A cancellation token.
The deserialized message.
Implemented by dynamically generated proxies returned from and its overloads
to provide access to additional JSON-RPC functionality.
Gets the instance behind this proxy.
An interface implemented by dynamic proxies generated by .
Occurs when a method is invoked on the proxy but before it is sent over RPC.
The event arg is the CLR name of the method being invoked.
Exceptions thrown from the handler propagate directly to the caller of the proxy and prevent the RPC request from being transmitted.
Occurs after a method is invoke and transmission over RPC has been queued.
The event arg is the CLR name of the method that was invoked.
Exceptions thrown from the handler propagate directly to the caller of the proxy, although the RPC request was already transmitted.
Interface optionally implemented by implementations that need a reference to their owner class.
Sets the instance.
May be thrown when set more than once.
An interface that allows instances to act as a factory for -derived types.
Creates an instance of suitable for transmission over the .
An instance of .
Creates an instance of suitable for transmission over the .
An instance of .
Creates an instance of suitable for transmission over the .
An instance of .
An interface that offers serialization to and from a sequence of bytes.
Deserializes a .
A sequence of bytes to deserialize.
The deserialized .
Serializes a .
The receiver of the serialized bytes.
The message to serialize.
Gets a JSON representation for a given message for tracing purposes.
The message to be traced.
Any object whose method will produce a human-readable JSON string, suitable for tracing.
The contract for sending and receiving JSON-RPC messages.
Gets a value indicating whether this message handler can receive messages.
Gets a value indicating whether this message handler can send messages.
Gets the formatter used for message serialization.
Reads a distinct and complete message from the transport, waiting for one if necessary.
A token to cancel the read request.
The received message, or if the underlying transport ends before beginning another message.Thrown when returns .Thrown if the transport ends while reading a message.Thrown if is canceled before a new message is received.
Implementations may assume this method is never called before any async result
from a prior call to this method has completed.
Writes a JSON-RPC message to the transport and flushes.
The message to write.
A token to cancel the write request.
A task that represents the asynchronous operation.Thrown when returns .Thrown if is canceled before message transmission begins.
Implementations should expect this method to be invoked concurrently
and use a queue to preserve message order as they are transmitted one at a time.
An that formats messages as JSON (text).
Gets or sets the encoding used for serialization for methods that do not take an explicit .
Never null.Thrown at an attempt to set the value to null.
Deserializes a sequence of bytes to a .
The bytes to deserialize.
The encoding to read the bytes in with. Must not be null.
The deserialized message.
Represents an object to be marshaled and provides check or influence its lifetime.
The interface type whose methods are exposed for RPC invocation on the target object.
When an object implementing this interface is disposed
the marshaling relationship is immediately terminated.
This releases resources allocated to facilitating the marshaling of the object
and prevents any further invocations of the object by the remote party.
If the underlying object implements then its
method is also invoked.
This type is an interface rather than a class so that users can enjoy covariance on the generic type parameter.
Occurs when the marshalling relationship is released,
whether by a local call to
or at the remote party's request.
Gets the marshalable proxy that should be used in the RPC message.
Gets the to associate with this object when it becomes a RPC target.
Uses Newtonsoft.Json serialization to serialize as JSON (text).
Each instance of this class may only be used with a single instance.
The key into an dictionary whose value may be a that failed deserialization.
JSON parse settings.
We save MBs of memory by turning off line info handling.
A collection of supported protocol versions.
UTF-8 encoding without a preamble.
The array pool to use for each instance.
An exactly default instance of the to use where no special settings
are needed.
This is useful when calling such APIs as
to avoid the simpler overloads that rely on which is a mutable static.
By sharing this reliably untainted instance, we avoid allocating a new serializer with each invocation.
The reusable to use with newtonsoft.json's serializer.
The reusable to use with newtonsoft.json's deserializer.
Object used to lock when running mutually exclusive operations related to this instance.
A value indicating whether a request where is a
has been transmitted.
This is useful to detect whether is operating in its default mode of producing
integer-based values for , which informs us whether we should
type coerce strings in response messages back to integers to accommodate JSON-RPC servers
that improperly convert our integers to strings.
The version of the JSON-RPC protocol being emulated by this instance.
Backing field for the property.
Whether has been executed.
Initializes a new instance of the class
that uses JsonProgress (without the preamble) for its text encoding.
Initializes a new instance of the class.
The encoding to use for the JSON text.
Gets or sets the encoding to use for transmitted messages.
Gets or sets the version of the JSON-RPC protocol emulated by this instance.
The default value is 2.0.
Gets the used when serializing and deserializing method arguments and return values.
Deserializes a to a .
The JSON to deserialize.
The deserialized message.
Serializes a to a .
The message to serialize.
The JSON of the message.
Do *NOT* change this to simply forward to since that
mutates the itself by tokenizing arguments as if we were going to transmit them
which BREAKS argument parsing for incoming named argument messages such as $/cancelRequest.
Converts user data to objects using all applicable user-provided instances.
A JSON-RPC message.
Converts a single user data value to a , using all applicable user-provided instances.
The that the is declared to be, if available.
The value to tokenize.
The instance.
Initializes a new instance of the class
with settings initialized to those set on the object.
The initialized instance of .
The incoming message.
Initializes a new instance of the class
for use with an incoming message.
The serializer to use.
The incoming message.
Initializes a new instance of the class
for use with an outcoming message.
The serializer to use.
Adapts the .NET to Newtonsoft.Json's interface.
Converts an instance of to a progress token.
Converts a progress token to an .
Converts an enumeration token to an .
Converts an instance of to an enumeration token.
Tracks recursion count while serializing or deserializing an exception.
Manages a JSON-RPC connection with another entity over a .
The to use to schedule work on the threadpool.
The name of the top-level field that we add to JSON-RPC messages to track JoinableTask context to mitigate deadlocks.
The object to lock when accessing the .
The object to lock when accessing the member.
A map of outbound calls awaiting responses.
Lock the object for all access to this member.
A delegate for the method.
The source for the property.
The completion source behind .
Backing field for the property.
Tracks RPC target objects.
Carries the value from a when has not been set.
List of remote RPC targets to call if connection should be relayed.
Backing field for the property.
Backing field for the property.
Backing field for the property.
Backing field for the property.
Backing field for the property.
Backing field for the property.
Backing field for .
Backing field for .
Backing field for the event.
Backing field for the event.
Backing field for the event.
Initializes a new instance of the class that uses
around messages serialized using the
.
The full duplex stream used to transmit and receive messages.
It is important to call to begin receiving messages.
Initializes a new instance of the class that uses
around messages serialized using the
.
The stream used to transmit messages. May be null.
The stream used to receive messages. May be null.
An optional target object to invoke when incoming RPC requests arrive.
It is important to call to begin receiving messages.
Initializes a new instance of the class.
The message handler to use to transmit and receive RPC messages.
An optional target object to invoke when incoming RPC requests arrive.
It is important to call to begin receiving messages.
Initializes a new instance of the class.
The message handler to use to transmit and receive RPC messages.
It is important to call to begin receiving messages.
Raised when the underlying stream is disconnected.
Event IDs raised to our .
Occurs when a local RPC method is added to our mapping table.
Occurs when a candidate local RPC method is NOT added to our mapping table.
Occurs when an event handler subscribes to an event on an added target object.
Occurs when this instance starts listening for incoming RPC messages.
Occurs when a notification arrives that is attempting to cancel a prior request.
Occurs when a JSON-RPC request or notification was received, but no local method is found to invoke for it.
Occurs when a is received.
Occurs when any is received.
At ,
is invoked with the that is received.
At ,
is invoked with the JSON representation of the message.
Occurs when any is transmitted.
At ,
is invoked with the that is transmitted.
At ,
is invoked with the JSON representation of the message.
Occurs when a is received and successfully mapped to a local method to be invoked.
Occurs when a locally invoked method from a throws an exception (or returns a faulted ).
is invoked with the thrown , request method name, request ID, and the argument object/array.
is invoked with a text message formatted with exception information.
Occurs when a successful result message for a prior invocation is received.
Occurs when an error message for a prior invocation is received.
Occurs when the connection is closed.
A local request is canceled because the remote party terminated the connection.
An extensibility point was leveraged locally and broke the contract.
An exception occurred when reading or writing the $/progress notification.
An incoming RPC call included an argument that failed to deserialize to the type on a candidate target method's proposed matching parameter.
This may not represent a fatal error. When there are multiple overloads to choose from,
choosing the overload to invoke involves attempts to deserialize arguments to the types dictated by each overload's parameters.
Thus a failure recorded in this event may be followed by a successful deserialization to another parameter type and invocation of a different overload.
An outgoing RPC message was not sent due to an exception, possibly a serialization failure.
An incoming cannot be deserialized to its original type because the type could not be loaded.
An instance of an -derived type was serialized as its base type because it did not have the applied.
An -derived type could not be deserialized because it was missing a deserializing constructor.
A base-type that does offer the constructor will be instantiated instead.
Gets or sets the to use when invoking methods requested by the remote party.
Defaults to null.
When not specified, methods are invoked on the threadpool.
Gets or sets the to participate in to mitigate deadlocks with the main thread.
Defaults to null.
Gets a that completes when this instance is disposed or when listening has stopped
whether by error, disposal or the stream closing.
The returned may transition to a faulted state
for exceptions fatal to the protocol or this instance.
When local RPC target objects or methods have been added, those methods may still be running from prior RPC requests
when this property completes. Track their completion with the property.
Gets a that completes when no local target methods are executing from an RPC call.
If the JSON-RPC connection is still active when retrieving this property's value, the returned will complete
when no local dispatches are in progress, even if the connection is still active.
Retrieving the property after a previously obtained has completed will result in a new, incomplete if incoming requests are currently in dispatch.
Gets or sets a value indicating whether configuration of this instance
can be changed after or
has been called.
The default is .
By default, all configuration such as target objects and target methods must be set
before listening starts to avoid a race condition whereby we receive a method invocation
message before we have wired up a handler for it and must reject the call.
But in some advanced scenarios, it may be necessary to add target methods after listening
has started (e.g. in response to an invocation that enables additional functionality),
in which case setting this property to is appropriate.
Gets or sets a value indicating whether to cancel all methods dispatched locally
that accept a when the connection with the remote party is closed.
Gets or sets the used to trace JSON-RPC messages and events.
The value can never be null.Thrown by the setter if a null value is provided.
Gets or sets the cancellation strategy to use.
The default value is the which uses the "$/cancelRequest" notification.
Gets or sets a value indicating whether exceptions thrown by the RPC server should be fully serialized
for the RPC client to then deserialize.
The default value is .
This setting influences the implementations of error processing virtual methods on this class.
When those methods are overridden by a derived type, this property may have different or no impact on behavior.
This does not alter how behaves when thrown, since that exception type supplies all the details of the error response directly.
Gets or sets the settings to use for serializing/deserializing exceptions.
Gets or sets the strategy for propagating activity IDs over RPC.
Gets the message handler used to send and receive messages.
Gets a token that is cancelled when the connection is lost.
Gets the user-specified or a default instance that will execute work on the threadpool.
Gets a value indicating whether listening has started.
Initializes a new instance of the class that uses
around messages serialized using the
, and immediately starts listening.
A bidirectional stream to send and receive RPC messages on.
An optional target object to invoke when incoming RPC requests arrive.
The initialized and listening object.
Initializes a new instance of the class that uses
around messages serialized using the
, and immediately starts listening.
The stream used to transmit messages. May be null.
The stream used to receive messages. May be null.
An optional target object to invoke when incoming RPC requests arrive.
The initialized and listening object.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
The bidirectional stream used to send and receive JSON-RPC messages.
An instance of the generated proxy.
In addition to implementing , it also implements
and should be disposed of to close the connection.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
The stream used to transmit messages. May be null.
The stream used to receive messages. May be null.
An instance of the generated proxy.
In addition to implementing , it also implements
and should be disposed of to close the connection.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
The message handler to use.
An instance of the generated proxy.
In addition to implementing , it also implements
and should be disposed of to close the connection.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
The message handler to use.
A set of customizations for how the client proxy is wired up. If , default options will be used.
An instance of the generated proxy.
In addition to implementing , it also implements
and should be disposed of to close the connection.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.An instance of the generated proxy.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
A set of customizations for how the client proxy is wired up. If , default options will be used.
An instance of the generated proxy.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
An instance of the generated proxy.
Creates a JSON-RPC client proxy that conforms to the specified server interface.
The interface that describes the functions available on the remote end.
A set of customizations for how the client proxy is wired up. If , default options will be used.
An instance of the generated proxy.Thrown if called after is called and is .
Adds a remote rpc connection so calls can be forwarded to the remote target if local targets do not handle it.
The json rpc connection to the remote target.
Adds a handler for an RPC method with a given name.
The name of the method as it is identified by the incoming JSON-RPC message.
It need not match the name of the CLR method/delegate given here.
The method or delegate to invoke when a matching RPC message arrives.
This method may accept parameters from the incoming JSON-RPC message.
Thrown if called after is called and is .
Adds a handler for an RPC method with a given name.
The name of the method as it is identified by the incoming JSON-RPC message.
It need not match the name of the CLR method/delegate given here.
The method or delegate to invoke when a matching RPC message arrives.
This method may accept parameters from the incoming JSON-RPC message.
An instance of the type that defines which should handle the invocation.
Thrown if called after is called and is .
Starts listening to incoming messages.
Type of the method result.
A single method argument, must be serializable using the selected .
Type of the method result.Type of the method result.Type of the method result.
An object whose properties match the names of parameters on the target method. Must be serializable using the selected .
A dictionary of objects that describe how each entry in the provided in is expected by the server to be typed.
If specified, this must have exactly the same set of keys as and contain no values.
Type of the method result.A task that completes when the server method executes and returns the result.Type of the method result.A task that completes when the server method executes and returns the result.
Invokes a given method on a JSON-RPC server without waiting for its response.
Any error that happens on the server side is ignored.
Method argument, must be serializable using the selected .
A task that completes when the notify request is sent to the channel to the server.If is null.Thrown when is empty.If this instance of has already been disposed prior to this call.Thrown when the connection is terminated (by either side) while the request is being transmitted.
Any exception thrown by the (typically due to serialization failures).
When using this should be .
When using this should be .
Any error that happens on the server side is ignored.
A task that completes when the notify request is sent to the channel to the server.
Any error that happens on the server side is ignored.
A task that completes when the notification has been transmitted.
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
Creates a marshallable proxy for a given object that may be sent over RPC such that the receiving side can invoke methods on the given object.
The interface type implemented by the that defines the members to expose over RPC.
The object to be exposed over RPC.
A lifetime controlling wrapper around a new proxy value.
Use for a simpler lifetime model when the object should only be marshaled within the scope of a single RPC call.
A proxy value that may be used within an RPC argument so the RPC server may call back into the object on the RPC client.
Use for greater control and flexibility around lifetime of the proxy.
This is required when the value is returned from an RPC method or when it is used within an RPC argument and must outlive that RPC invocation.
Creates a JSON-RPC client proxy that implements a given set of interfaces.
The interface that describes the functions available on the remote end.
Additional marshalable interfaces that the client proxy should implement.
A set of customizations for how the client proxy is wired up. If , default options will be used.
An instance of the generated proxy.Thrown if called after is called and is .
Adds a new RPC interface to an existing target registering additional RPC methods.
The interface type whose members define the RPC accessible members of the object.
Target to invoke when incoming messages are received.
A set of customizations for how the target object is registered. If , default options will be used.
An optional object that may be disposed of to revert the addition of the target object.
Attempts to load a type based on its full name and possibly assembly name.
The of the type to be loaded.
The assemble name that is expected to define the type, if available. This should be parseable by .
The loaded , if one could be found; otherwise .
This method is used to load types that are strongly referenced by incoming messages during serialization.
It is important to not load types that may pose a security threat based on the type and the trust level of the remote party.
The default implementation of this method loads any type named if it can be found based on its assembly name (if provided) or based on any assembly already loaded in the AppDomain otherwise.
Implementations should avoid throwing , or other exceptions, preferring to return instead.
Disposes managed and native resources held by this instance.
if being disposed; if being finalized.
Indicates whether the connection should be closed when the server throws an exception.
The thrown from server that is potentially fatal.
A indicating if the streams should be closed.
This method is invoked within the context of an exception filter or when a task fails to complete and simply returns false by default.
If the process should crash on an exception,
calling will produce such behavior.
Creates the to be used as the value for the error property to be sent back to the client in response to an exception being thrown from an RPC method invoked locally.
The request that led to the invocation that ended up failing.
The exception thrown from the RPC method.
The error details to return to the client. Must not be .
This method may be overridden in a derived class to change the way error details are expressed.
Creates a (or derived type) that represents the data found in a JSON-RPC error response.
This is called on the client side to produce the exception that will be thrown back to the RPC client.
The JSON-RPC request that produced this error.
The JSON-RPC error response.
An instance of .
Determines the type that the object should be deserialized to
for an incoming message.
The received error message.
The type, or if the type is unknown.
The default implementation matches what does
by assuming that the object should be deserialized as an instance of .
However derived types can override this method and use or other means to determine the appropriate type.
Invokes the specified RPC method.
RPC method return type.
An identifier established by the Client that MUST contain a String, Number, or NULL value if included.
If it is not included it is assumed to be a notification.
Invokes the specified RPC method.
RPC method return type.
An identifier established by the Client that MUST contain a String, Number, or NULL value if included.
If it is not included it is assumed to be a notification.
RPC method return type.
An identifier established by the Client. If the default value is given, it is assumed to be a notification.
Value which indicates if parameter should be passed as an object.
Invokes a given method on a JSON-RPC server.
RPC method return type.
An identifier established by the Client. If the default value is given, it is assumed to be a notification.
Name of the method to invoke. Must not be null or empty.
Arguments to pass to the invoked method. They must be serializable using the selected . If , no arguments are passed.
A list of objects that describe how each element in is expected by the server to be typed.
If specified, this must have exactly the same length as and contain no elements.
This value is ignored when is true.
A dictionary of objects that describe how each entry in the provided in the only element of is expected by the server to be typed.
If specified, this must have exactly the same set of keys as the dictionary contained in the first element of , and contain no values.
The token whose cancellation should signal the server to stop processing this request.
Value which indicates if parameter should be passed as an object.
A task that completes with the response from the JSON-RPC server.
Thrown after is canceled.
If the request has already been transmitted, the exception is only thrown after the server has received the cancellation notification and responded to it.
If the server completes the request instead of cancelling, this exception will not be thrown.
When the connection drops before receiving a response, this exception is thrown if has been canceled.
A common base class for a variety of RPC exceptions that may be thrown. Some common derived types are listed individually.
Thrown when an error is returned from the server in consequence of executing the requested method.
Thrown when the server reports that no matching method was found to invoke.
If is null.Thrown when is empty.If this instance of has already been disposed prior to this call.
Thrown when the connection is terminated (by either side) before the request or while the request is in progress,
unless is already signaled.
Any exception thrown by the (typically due to serialization failures).
When using this should be .
When using this should be .
Creates a unique for an outbound request.
The unique .
Raises the event.
The request whose transmission could not be completed.
Raises the event.
The result or error that was received.
Raises the event.
The result or error that was sent.
Invokes the method on the local RPC target object and converts the response into a JSON-RPC result message.
The incoming JSON-RPC request that resulted in the being selected to receive the dispatch.
The method to be invoked and the arguments to pass to it.
A cancellation token to pass to .
The JSON-RPC response message to send back to the client.
This is never expected to be null. If the protocol indicates no response message is expected by the client, it will be dropped rather than transmitted.
Overrides of this method are expected to call this base method for core functionality.
Overrides should call the base method before any yielding await in order to maintain consistent message ordering
unless the goal of the override is specifically to alter ordering of incoming messages.
Sends the JSON-RPC message to intance to be transmitted.
The message to send.
A token to cancel the send request.
A task that represents the asynchronous operation.
Overrides of this method are expected to call this base method for core functionality.
Overrides should call the base method before any yielding await in order to maintain consistent message ordering
unless the goal of the override is specifically to alter ordering of outgoing messages.
Extracts the literal type from the type hierarchy of a given type.
The original type of the value returned from an RPC-invoked method.
Receives the type that is a base type of , if found.
if could be found in the type hierarchy; otherwise .
Convert a or into a if possible.
The result from the RPC method invocation.
Receives the converted object, if conversion was possible; otherwise .
if conversion succeeded; otherwise.
Perform any special processing on the result of an RPC method before serializing it for transmission to the RPC client.
The result from the RPC method.
A cancellation token.
A task that completes when processing the result is complete. The returned Task *may* transition to a state.
Cancels an individual outbound pending request.
The associated with the request to be canceled.
Throws an exception if we have already started listening,
unless is .
Thrown if is and is .
Provides customizations on performance characteristics of an that is passed over JSON-RPC.
A shared instance with the default settings to use.
This is internal because the type is mutable and thus cannot be safely shared.
Backing field for the property.
Backing field for the property.
Backing field for the property.
Gets or sets the maximum number of elements to read ahead and cache from the generator in anticipation of the consumer requesting those values.
This value must be a non-negative number.
Gets or sets the minimum number of elements to obtain from the generator before sending a batch of values to the consumer.
This must be a positive integer.
Gets or sets the number of elements that should be precomputed and provided in the initial JSON-RPC message
so the receiving party does not neet to request the initial few elements.
This should only be used for objects returned directly from an RPC method.To prefetch items for objects used as arguments to an RPC method
or within an object graph of a returned value, use the extension method
instead and leave this value at 0.
The ETW source for logging events for this library.
We use a fully-descriptive type name because the type name becomes the name
of the ETW Provider.
The singleton instance of this event source.
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
The event ID for the .
A flag indicating whether to force tracing to be on.
Initializes a new instance of the class.
ETW wants to see no more than one instance of this class.
Signals the transmission of a notification.
The name of the method.
A snippet representing the arguments.
Signals the transmission of a request.
The id of the request, if any.
The name of the method.
A snippet representing the arguments.
Signals the receipt of a successful response.
The ID of the request being responded to.
Signals the receipt of a response.
The ID of the request being responded to.
The on the error response.
Signals that the connection dropped before a response to a request was received.
The ID of the request that did not receive a response.
Signals that a previously transmitted request is being canceled.
The ID of the request being canceled.
Signals the receipt of a notification.
The name of the method.
A snippet representing the arguments.
Signals the receipt of a request.
The id of the request, if any.
The name of the method.
A snippet representing the arguments.
Signals the transmission of a successful response.
The ID of the request being responded to.
Signals the receipt of a response.
The ID of the request being responded to.
The on the error response.
Signals that a previously transmitted request is being canceled.
The ID of the request being canceled.
Signals that a message has been queued for transmission.
Signals that a message has been transmitted.
Signal that an has transmitted a message.
Size of the payload..
Signal that an has received a message.
Size of the payload..
Creates a string representation of arguments of max 200 characters for logging.
The request whose arguments are to be logged.
String representation of first argument only.
Names of constants in this class make up the middle term in the event name
E.g.: StreamJsonRpc/InvokeMethod/Start.
Name of this class is important for EventSource.
Names of constants in this class make up the middle term in the event name
E.g.: StreamJsonRpc/InvokeMethod/Start.
Name of this class is important for EventSource.
Extension methods for use with .
A non-generic interface implemented by
so that non-generic callers can initiate a prefetch if necessary.
Decorates an with settings that customize how StreamJsonRpc will send its items to the remote party.
The type of element enumerated by the sequence.
The enumerable to be decorated.
The settings to associate with this enumerable.
The decorated enumerable instance.
Converts an to so it will be streamed over an RPC connection progressively
instead of as an entire collection in one message.
The type of element enumerated by the sequence.
The enumerable to be converted.
A cancellation token.
The async enumerable instance.
Converts an to so it will be streamed over an RPC connection progressively
instead of as an entire collection in one message.
The type of element enumerated by the sequence.
The enumerable to be converted.
The settings to associate with this enumerable.
A cancellation token.
The async enumerable instance.
Preloads an with a cache of pre-enumerated items for inclusion in the initial transmission
of the enumerable over an RPC channel.
The type of item in the collection.
The sequence to pre-fetch items from.
The number of items to pre-fetch. If this value is larger than the number of elements in the enumerable, all values will be pre-fetched.
A cancellation token.
A decorated object that is specially prepared for processing by JSON-RPC with the preloaded values.
Extracts the from an
that may have been previously returned from .
The type of element enumerated by the sequence.
The enumerable, which may have come from .
The settings to use.
If the did not come from ,
the default settings will be returned.
Executes the pre-fetch of values for an object if
prefetch is set with the property.
An object which might represent an .
A token to cancel prefetching.
A task that tracks completion of the prefetch operation.
Options that may customize how a dynamically generated client proxy object calls into a instance.
Backing field for the property.
Backing field for the property.
Initializes a new instance of the class.
Initializes a new instance of the class
with properties initialized from another instance.
The options to copy values from.
Gets or sets a function that takes the CLR method name and returns the RPC method name.
This method is useful for adding prefixes to all methods, or making them camelCased.
A function, defaulting to a straight pass-through. Never null.Thrown if set to a null value.
Gets or sets a function that takes the CLR event name and returns the RPC event name used in notifications.
This method is useful for adding prefixes to all events, or making them camelCased.
A function, defaulting to a straight pass-through. Never null.Thrown if set to a null value.
Gets or sets a value indicating whether the client proxy will pass named arguments (i.e. an args object)
instead of the default positional arguments (i.e. an args array).
Gets an instance with default properties.
Callers should *not* mutate properties on this instance since it is shared.
Gets or sets a delegate to invoke when this proxy is disposed.
When set, the proxy will *not* automatically dispose of the owning instance.
This delegate *may* be called concurrently or more than once if the proxy owner calls concurrently.
Gets or sets a callback that is invoked whenever a proxy is constructed.
Options that may customize how a target object is added to a instance.
Initializes a new instance of the class.
Initializes a new instance of the class.
An instance to copy all property values from.
Gets or sets a function that takes the CLR method name and returns the RPC method name.
This method is useful for adding prefixes to all methods, or making them camelCased.
Gets or sets a function that takes the CLR event name and returns the RPC event name used in notification messages.
This method is useful for adding prefixes to all events, or making them camelCased.
Gets or sets a value indicating whether events raised on the target object
should be relayed to the client via a JSON-RPC notify message.
The default is .
Gets or sets a value indicating whether non-public methods/events on target objects can be invoked
by remote clients.
The default value is .
The default for this property was in the 1.x versions.
This value serves as a default for for members that have no applied.
This value serves as a default for for members that have no applied.
Gets or sets a value indicating whether to dispose of the target object
when the connection with the remote party is lost.
The target object may implement ,
or .
The first implemented interface from this list is the one whose dispose method will be invoked.
Exceptions thrown from the dispose method will be aggregated into .
Gets an instance with default properties.
Callers should *not* mutate properties on this instance since it is shared.
A minimal header for each message that simply declares content length.
The length is expressed as a big endian, 4 byte integer.
The formatter to use for message serialization.
The sent to the to write the message.
Initializes a new instance of the class.
The reader and writer to use for receiving/transmitting messages.
The formatter to use for message serialization.
Initializes a new instance of the class.
The writer to use for transmitting messages.
The reader to use for receiving messages.
The formatter to use for message serialization.
Initializes a new instance of the class.
The stream to use for transmitting messages.
The stream to use for receiving messages.
The formatter to use to serialize instances.
An abstract base class for for sending and receiving messages.
This class and its derivatives are safe to call from any thread.
Calls to
are protected by a semaphore to guarantee message integrity
and may be made from any thread.
The caller must take care to call sequentially.
The source of a token that is canceled when this instance is disposed.
A semaphore acquired while sending a message.
The sync object to lock when inspecting and mutating the field.
A signal that the last read operation has completed.
A signal that the last write operation has completed.
A value indicating whether the and/or methods are in progress.
Initializes a new instance of the class.
The formatter used to serialize messages.
No flags.
Indicates that the method is in running.
Indicates that the method is in running.
Gets a value indicating whether this message handler can receive messages.
Gets a value indicating whether this message handler can send messages.
Gets a value indicating whether this instance has been disposed.
Gets a token that is canceled when this instance is disposed.
Gets a task that completes when this instance has completed disposal.
Reads a distinct and complete message from the transport, waiting for one if necessary.
A token to cancel the read request.
The received message, or if the underlying transport ends before beginning another message.Thrown when returns .Thrown if the transport ends while reading a message.Thrown if is canceled before a new message is received.
Implementations may assume this method is never called before any async result
from a prior call to this method has completed.
Writes a message to the transport and flushes.
The message to write.
A token to cancel the write request.
A task that represents the asynchronous operation.Thrown when returns .Thrown if is canceled before message transmission begins.Thrown if this instance is disposed before or during transmission.
Implementations should expect this method to be invoked concurrently
and use a queue to preserve message order as they are transmitted one at a time.
Disposes this instance, and cancels any pending read or write operations.
Disposes this instance, and cancels any pending read or write operations.
Disposes resources allocated by this instance that are common to both reading and writing.
when being disposed; when being finalized.
This method is called by after both and have completed.
Overrides of this method *should* call the base method as well.
Disposes resources allocated by this instance that are used for reading (not writing).
This method is called by after the last read operation has completed.
Disposes resources allocated by this instance that are used for writing (not reading).
This method is called by after the last write operation has completed.
Overrides of this method *should* call the base method as well.
Reads a distinct and complete message, waiting for one if necessary.
A token to cancel the read request.
A task whose result is the received message.
A null string indicates the stream has ended.
An empty string should never be returned.
Writes a message.
The message to write.
A token to cancel the transmission.
A task that represents the asynchronous write operation.
Ensures that all messages transmitted up to this point are en route to their destination,
rather than sitting in some local buffer.
A cancellation token.
A that completes when the write buffer has been transmitted,
or at least that the operation is in progress, if final transmission cannot be tracked.
Serializes JSON-RPC messages using MessagePack (a fast, compact binary format).
The MessagePack implementation used here comes from https://github.com/neuecc/MessagePack-CSharp.
The README on that project site describes use cases and its performance compared to alternative
.NET MessagePack implementations and this one appears to be the best by far.
The constant "jsonrpc", in its various forms.
The constant "id", in its various forms.
The constant "method", in its various forms.
The constant "result", in its various forms.
The constant "error", in its various forms.
The constant "params", in its various forms.
The constant "traceparent", in its various forms.
The constant "tracestate", in its various forms.
The constant "2.0", in its various forms.
A cache of property names to declared property types, indexed by their containing parameter object type.
All access to this field should be while holding a lock on this member's value.
A resolver for stateless formatters that make types serializable that users may expect to be,
but for which MessagePack itself provides no formatter in the default resolver.
The resolver to include when we want to enable string interning.
The options to use for serializing top-level RPC messages.
The options to use for serializing user data (e.g. arguments, return values and errors).
Initializes a new instance of the class.
Gets the original msgpack sequence that was deserialized into this message.
The buffer is only retained for a short time. If it has already been cleared, the result of this property is an empty sequence.
Gets the default used for user data (arguments, return values and errors) in RPC calls
prior to any call to .
This is
modified to use the security setting.
Sets the to use for serialization of user data.
The options to use. Before this call, the options used come from .
Extracts a dictionary of property names and values from the specified params object.
The params object.
A dictionary of argument values and another of declared argument types, or if is null.
This method supports DataContractSerializer-compliant types. This includes C# anonymous types.
Reads a string with an optimized path for the value "2.0".
The reader to use.
The decoded string.
Writes the JSON-RPC version property name and value in a highly optimized way.
Takes the user-supplied resolver for their data types and prepares the wrapping options
and the dynamic object wrapper for serialization.
The options for user data that is supplied by the user (or the default).
The to use for all user data (args, return values and error data) and a special formatter to use when all we have is for this user data.
Gets the original string.
Gets the 64-bit integer that represents the string without decoding it.
Gets the next 64-bit integer that represents the string without decoding it.
Gets the messagepack header and UTF-8 bytes for this string.
Writes out the messagepack binary for this common string, if it matches the given value.
The writer to use.
The value to be written, if it matches this .
if matches this and it was written; otherwise.
Checks whether a span of UTF-8 bytes equal this common string.
The UTF-8 string.
if the UTF-8 bytes are the encoding of this common string; otherwise.
Reads one raw messagepack token.
The reader to use.
if the token must outlive the lifetime of the reader's underlying buffer; otherwise.
The raw messagepack slice.
A recyclable object that can serialize a message to JSON on demand.
In perf traces, creation of this object used to show up as one of the most allocated objects.
It is used even when tracing isn't active. So we changed its design to be reused,
since its lifetime is only required during a synchronous call to a trace API.
Initializes this object to represent a message.
Cleans out this object to release memory and ensure throws if someone uses it after deactivation.
Converts an instance of to a progress token.
Converts a progress token to an or an into a token.
Converts an enumeration token to an
or an into an enumeration token.
The constant "token", in its various forms.
The constant "values", in its various forms.
Converts an instance of to an enumeration token.
Manages serialization of any -derived type that follows standard rules.
A serializable class will:
1. Derive from
2. Be attributed with
3. Declare a constructor with a signature of (, ).
Tracks recursion count while serializing or deserializing an exception.
This is placed here (outside the generic class)
so that it's one counter shared across all exception types that may be serialized or deserialized.
Enables formatting the default/empty class.
The singleton instance of the formatter to be used.
Initializes a new instance of the class
for an incoming message.
The serializer options to use for this data.
The map of unrecognized inbound properties.
Initializes a new instance of the class
for an outbound message.
The serializer options to use for this data.
Writes the properties tracked by this collection to a messagepack writer.
The writer to use.
A JSON-RPC message handler that delimits messages with new lines.
When reading messages, either \n or \r\n character sequences are permitted for new lines.
When writing messages the property controls which character sequence is used to terminate each message.
The that buffers an outgoing message.
Backing field for the property.
The bytes to write out as the new line after each message.
Initializes a new instance of the class.
The reader and writer to use for receiving/transmitting messages.
The formatter used to serialize messages. Only UTF-8 formatters are supported.
Initializes a new instance of the class.
The writer to use for transmitting messages.
The reader to use for receiving messages.
The formatter used to serialize messages. Only UTF-8 formatters are supported.
Initializes a new instance of the class.
The stream to use for transmitting messages.
The stream to use for receiving messages.
The formatter used to serialize messages. Only UTF-8 formatters are supported.
Describes the supported styles of new lines that can be written.
Newlines are represented as a single \n character.
Newlines are represented by a \r\n character sequence.
Gets or sets the new line sequence to use to terminate a JSON-RPC message.
Gets the byte sequence for new lines.
The encoding to use to convert the new line characters to bytes.
The style of new line to produce.
The bytes to emit for each new line.
Validates and initializes fields as they should be from every constructor.
An abstract base class for for sending and receiving messages
using and .
The largest size of a message to buffer completely before deserialization begins
when we have an async deserializing alternative from the formatter.
This value is chosen to match the default buffer size for the class
since exceeding the would cause an exception
when we call to wait for more data.
Initializes a new instance of the class.
The reader and writer to use for receiving/transmitting messages.
The formatter used to serialize messages.
Initializes a new instance of the class.
The writer to use for transmitting messages.
The reader to use for receiving messages.
The formatter used to serialize messages.
Initializes a new instance of the class.
The stream to use for transmitting messages.
The stream to use for receiving messages.
The formatter used to serialize messages.
Gets the reader to use for receiving messages.
Gets the writer to use for transmitting messages.
Writes a message to the pipe.
The message to write.
A token to cancel the transmission.
Implementations may assume the method is never called before the previous call has completed.
They can assume their caller will invoke on their behalf
after writing is completed.
Reads from the until at least a specified number of bytes are available.
The number of bytes that must be available.
to allow returning 0 bytes if the end of the stream is encountered before any bytes are read.
A cancellation token.
The containing at least bytes.Thrown if .
Thrown if before we have bytes.
Not thrown if 0 bytes were read and is .
Deserializes a JSON-RPC message using the .
The length of the JSON-RPC message.
A cancellation token.
The deserialized message.
Deserializes a JSON-RPC message using the .
The length of the JSON-RPC message.
The encoding to use during deserialization, as specified in a header for this particular message.
The encoding to use when is if the supports encoding.
A cancellation token.
The deserialized message.Thrown if is non-null and the formatter does not implement the appropriate interface to supply the encoding.
A class that describes useful data that may be found in the JSON-RPC error message's error.data property.
Initializes a new instance of the class.
Initializes a new instance of the class.
The exception to copy error details from.
Gets or sets the type of error (e.g. the full type name of the exception thrown).
Gets or sets the message associated with this error.
Gets or sets the stack trace associated with the error.
Gets or sets the application error code or HRESULT of the failure.
Gets or sets the inner error information, if any.
An interface found on JSON-RPC protocol messages that contain an id field.
Gets or sets the ID on a message.
Describes the error resulting from a that failed on the server.
Gets or sets the detail about the error.
Gets or sets an identifier established by the client if a response to the request is expected.
A , an , a , or .
Gets or sets an identifier established by the client if a response to the request is expected.
Gets the string to display in the debugger for this instance.
Describes the error.
Gets or sets a number that indicates the error type that occurred.
The error codes from and including -32768 to -32000 are reserved for errors defined by the spec or this library.
Codes outside that range are available for app-specific error codes.
Gets or sets a short description of the error.
The message SHOULD be limited to a concise single sentence.
Gets or sets additional data about the error.
Gets the value of the , taking into account any possible type coercion.
The to coerce the to.The result.
Gets the value of the , taking into account any possible type coercion.
The to deserialize the data object to.
The result.Thrown if is null.
Derived types may override this method in order to deserialize the
such that it can be assignable to .
The default implementation does nothing to convert the object to match , but simply returns the existing object.
Derived types should *not* throw exceptions. This is a best effort method and returning null or some other value is preferable to throwing
as it can disrupt an existing exception handling path.
Provides a hint for a deferred deserialization of the value as to the type
argument that will be used when calling later.
The type that will be used as the generic type argument to .
Overridding methods in types that retain buffers used to deserialize should deserialize within this method and clear those buffers
to prevent further access to these buffers which may otherwise happen concurrently with a call to
that would recycle the same buffer being deserialized from.
Error codes laid out in the JSON-RPC spec or this library.
Per the spec, the error codes from and including -32768 to -32000 are reserved for pre-defined errors.
The range from -32000 to -32099 is "Reserved for implementation-defined server-errors", so we define whatever new we need for StreamJsonRpc.
Indicates the RPC call was made but the target threw an exception.
The included in the is likely to be .
Indicates a request was made to a remotely marshaled object that never existed or has already been disposed of.
Indicates a response could not be serialized as the application intended.
Indicates the RPC call was made but the target threw an exception.
The included in the should be interpreted as an serialized via .
Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.
The JSON sent is not a valid Request object.
The method does not exist / is not available.
Invalid method parameter(s).
Internal JSON-RPC error.
Execution of the server method was aborted due to a cancellation request from the client.
The base class for a JSON-RPC request or response.
Gets or sets the version of the JSON-RPC protocol that this message conforms to.
Defaults to "2.0".
Retrieves a top-level property from an incoming message that is an extension to the JSON-RPC specification.
The type to deserialize the value as, if it is present.
The name of the top-level property.
Receives the deserialized value if the supports reading such properties
and the property is present in the message.
Otherwise, this parameter is set to its value.
if the supports this extensibility
and the property was present on the message; otherwise .
May be thrown when called on an outbound message.Thrown when is .Thrown when is reserved by the JSON-RPC spec.
Sets a top-level property in the message that is an extension to JSON-RPC specification.
The type of value to be serialized.
The name of the property. This should not collide with any property defined by the JSON-RPC specification.
The value for the property.
if the formatter supports setting top-level properties;
otherwise.
May be thrown when called on an inbound message.Thrown when is .Thrown when is reserved by the JSON-RPC spec.
Describes a method to be invoked on the server.
The result of an attempt to match request arguments with a candidate method's parameters.
All arguments matched up with all method parameters.
The number of arguments did not match the number of parameters.
At least one argument could not be made to match its corresponding parameter.
An argument could not be found for a required parameter.
Gets or sets the name of the method to be invoked.
Gets or sets the arguments to use when invoking the specified .
Either an array of arguments or an object whose properties are used in a named arguments object.
An array of arguments OR map of named arguments.
Preferably either an instance of where the key is a string representing the name of the parameter
and the value is the argument, or an array of .
If neither of these, and should be overridden.
Gets or sets an identifier established by the client if a response to the request is expected.
A , an , a , or .
Gets or sets an identifier established by the client if a response to the request is expected.
Gets a value indicating whether a response to this request is expected.
Gets a value indicating whether this is a notification, and no response is expected.
Gets the number of arguments supplied in the request.
Gets or sets the dictionary of named arguments, if applicable.
Gets or sets a dictionary of objects indexed by the property name that describe how each element in is expected by the server to be typed.
If specified, this must have exactly the same size as and contain no values.
This property is *not* serialized into the JSON-RPC message.
On the client-side of an RPC call it comes from the declared property types in the parameter object.
On the server-side of the RPC call it comes from the types of each parameter on the invoked RPC method.
This list is used for purposes of aiding the in serialization.
Gets or sets an array of arguments, if applicable.
Gets or sets a read only list of arguments, if applicable.
Gets or sets a list of objects that describe how each element in is expected by the server to be typed.
If specified, this must have exactly the same length as and contain no elements.
This property is *not* serialized into the JSON-RPC message.
On the client-side of an RPC call it comes from the typed arguments supplied to the
method.
On the server-side of the RPC call it comes from the types of each parameter on the invoked RPC method.
This list is used for purposes of aiding the in serialization.
Gets the sequence of argument names, if applicable.
Gets or sets the data for the W3C Trace Contexttraceparent value.
Gets or sets the data for the W3C Trace Contexttracestate value.
Gets the string to display in the debugger for this instance.
Gets the arguments to supply to the method invocation, coerced to types that will satisfy the given list of parameters.
The list of parameters that the arguments must satisfy.
An array to initialize with arguments that can satisfy CLR type requirements for each of the .
The length of this span must equal the length of .
if all the arguments can conform to the types of the and is initialized; otherwise.Thrown if the argument exists, but cannot be deserialized.
Retrieves an argument for the RPC request.
The name of the parameter that requires an argument. May be null if the caller knows they want a positional argument.
The index of the parameter that requires an argument. May be -1 for an argument with no position.
The type of the parameter that requires an argument. May be null if the type need not be coerced.
Receives the value of the argument, if it exists. It MAY be returned even if it does not conform to .
if an argument is available for a parameter with the given name or position; otherwise.
A derived-type may override this method in order to consider the
and deserialize the required argument on-demand such that it can satisfy the type requirement.
Thrown if the argument exists, but cannot be deserialized.
Describes the result of a successful method invocation.
Gets or sets the value of the result of an invocation, if any.
Gets or sets the declared type of the return value.
This value is not serialized, but is used by the RPC server to assist in serialization where necessary.
Gets or sets an identifier established by the client if a response to the request is expected.
A , an , a , or .
Gets or sets an identifier established by the client if a response to the request is expected.
Gets the string to display in the debugger for this instance.
Gets the value of the , taking into account any possible type coercion.
The to coerce the to.The result.
Derived types may override this method in order to deserialize the
such that it can be assignable to .
Provides a hint for a deferred deserialization of the value as to the type
argument that will be used when calling later.
The type that will be used as the generic type argument to .
No flags.
The parent is tracing their action.
Gets a dynamically generated type that implements a given interface in terms of a instance.
The interface that describes the RPC contract, and that the client proxy should implement.
Additional marshalable interfaces that the client proxy should implement.
The generated type.
Sorts so that:
interfaces that are extending a lesser number of other interfaces in come first;interfaces extending the same number of other interfaces in , are ordered by optional interface code;
where a code comes first.
The list of RPC interfaces to be sorted.
Converts the value on the stack to one compatible with the method's return type.
The interface method that we're generating code for.
if the return type is or ; otherwise.
if the return type is ; otherwise.
The IL emitter for the method.
The Invoke method on that IL was just emitted to invoke.
The parameter in the proxy method, if there is one.
Gets the to use for generating a proxy for the given type.
The type of the interface to generate a proxy for.
The to use.
Dictionary key for .
A synthesized that makes a promise for such a value look like the actual value.
The type of element produced by the enumerable.
Helper methods for dynamically generated proxies to invoke.
This type is only public because mono does not support IgnoresAccessChecksToAttribute. Do not call directly.
The name of the value stored by exceptions that stores watson bucket information.
This value should be suppressed when writing or reading exceptions as it is irrelevant to
remote parties and otherwise adds to the size to the payload.
Gets a value like
but omits members that should not be serialized.
Gets a member enumerator that omits members that should not be serialized.
Adds a member if it isn't among those that should not be deserialized.
Implemented by to expose callbacks allowing an to perform resource cleanup.
Occurs when aborts the transmission of an outbound request (that was not a notification).
This usually occurs because of an exception during serialization or transmission, possibly due to cancellation.
Occurs when receives a response to a previously sent request.
Occurs when transmits a response message.
An interface implemented by instances
to support some formatter extensions such as .
Gets the id of the request or response currently being serialized.
Gets the ID of the response currently being deserialized.
Gets a value indicating whether a is being serialized.
A response is being serialized if this property's value is while is non-empty.
Optionally implemented by a when it needs the fully serialized sequence in order to trace the JSON representation of the message.
Invites the formatter to call with the JSON representation of the message just serialized..
The message that was just serialized.
The encoded copy of the message, as it recently came from the method.
An interface that may be found on an object to request notification of when
message deserialization is completed so buffers can be released or safely recycled.
Notifies that it is safe to free buffers held to deserialize the payload for a message because all deserialization attempts are completed.
The message whose deserialization is done.
Implementations are guaranteed to be called at least once for each message when deserialization is completed.
This method will be invoked before the next request to .
An interface implemented by for implementations to use to facilitate message tracing.
Occurs when the has serialized a message for transmission.
The JSON-RPC message.
The encoded form of the message. Calling on this should produce the JSON-RPC text of the message.
Occurs when the has deserialized an incoming message.
The JSON-RPC message.
The encoded form of the message. Calling on this should produce the JSON-RPC text of the message.
Carries the from request or response messages.
Initializes a new instance of the class.
The ID from the request or response that the event is regarding.
Initializes a new instance of the class.
The message the event is regarding.
Gets the id on the request, result or error.
Carries the and success status of response messages.
Initializes a new instance of the class.
The ID from the request or response that the event is regarding.
A flag indicating whether the response is a result (as opposed to an error).
Initializes a new instance of the class.
The message the event is regarding.
Gets a value indicating whether the response is a result (as opposed to an error).
Assists implementations with supporting marshaling over JSON-RPC.
Lifetime rules:
* The always originates on the client and passed as an argument to the server.
Servers are not allowed to return to clients because the server would have no feedback if the client dropped it, leaking resources.
* The client can only send an in a request (that expects a response).
Notifications would not provide the client with feedback that the server dropped it, leaking resources.
* The client will immediately terminate the if the server returns ANY error in response to the request, since the server may not be aware of the .
* The will NOT be terminated when a successful response is received from the server. Client and server are expected to negotiate the end of the themselves.
The formatter that owns this tracker.
A map of outbound request IDs to channels that they included.
A map of inbound request IDs to channels that they included.
The set of channels that have been opened but not yet closed to support outbound requests, keyed by their ID.
The set of channels that have been opened but not yet closed to support inbound requests, keyed by their ID.
Backing field for the property.
Initializes a new instance of the class.
The instance that may be used to send or receive RPC messages related to .
The formatter that owns this tracker.
Gets or sets the multiplexing stream used to create and accept channels.
If this is , some public methods will throw .
Gets the id of the request currently being serialized for use as a key in .
Gets the ID of the request currently being deserialized for use as a key in .
Creates a token to represent an as it is transmitted from the client to an RPC server as a method argument.
The client pipe that is to be shared with the RPC server. May be null.
The token to use as the RPC method argument; or if was .Thrown if no was provided to the constructor or when serializing a message without an ID property.
Creates a token to represent a as it is transmitted from the client to an RPC server as a method argument.
The client pipe that is to be shared with the RPC server. May be null.
The token to use as the RPC method argument; or if was .Thrown if no was provided to the constructor or when serializing a message without an ID property.
Creates a token to represent a as it is transmitted from the client to an RPC server as a method argument.
The client pipe that is to be shared with the RPC server. May be null.
The token to use as the RPC method argument; or if was .Thrown if no was provided to the constructor or when serializing a message without an ID property.
Creates an from a given token as it is received at the RPC server as a method argument.
The method argument, which was originally obtained by the client using the method.
The from the token; or if was .Thrown if the token does not match up with an out of band channel offered by the client.Thrown if no was provided to the constructor.
Creates a from a given token as it is received at the RPC server as a method argument.
The method argument, which was originally obtained by the client using the method.
The from the token; or if was .Thrown if the token does not match up with an out of band channel offered by the client.Thrown if no was provided to the constructor.
Creates a from a given token as it is received at the RPC server as a method argument.
The method argument, which was originally obtained by the client using the method.
The from the token; or if was .Thrown if the token does not match up with an out of band channel offered by the client.Thrown if no was provided to the constructor.
Disposes managed and native resources held by this instance.
if being disposed; if being finalized.
Throws if is .
A helper class that implementations may use to support return values from RPC methods.
The name of the string property that carries the handle for the enumerable.
The name of the JSON array property that contains the values.
The name of the boolean property that indicates whether the last value has been returned to the consumer.
Dictionary used to map the outbound request id to their progress info so that the progress objects are cleaned after getting the final response.
Initializes a new instance of the class.
The instance that may be used to send or receive RPC messages related to .
The formatter that owns this tracker.
Checks if a given implements .
The type which may implement .
true if given implements ; otherwise, false.
We use as a generic type argument in this because what we use doesn't matter, but we must use *something*.
Checks if a given is exactly some closed generic type based on .
The type which may be .
true if given is ; otherwise, false.
We use as a generic type argument in this because what we use doesn't matter, but we must use *something*.
Used by the generator to assign a handle to the given .
The type of value that is produced by the enumerable.
The enumerable to assign a handle to.
The handle that was assigned.
Used by the consumer to construct a proxy that implements
and gets all its values from a remote generator.
The type of value that is produced by the enumerable.
The handle specified by the generator that is used to obtain more values or dispose of the enumerator. May be to indicate there will be no more values.
The list of items that are included with the enumerable handle.
The enumerator.
Provides the instance that is used by a consumer.
The type of value produced by the enumerator.
Provides the instance that is used by a consumer.
A sequence of values that have already been received from the generator but not yet consumed.
A value indicating whether the generator has reported that no more values will be forthcoming.
Class containing useful methods to help message formatters implement support for .
Special method name for progress notification.
Dictionary used to map the outbound request id to their progress info so that the progress objects are cleaned after getting the final response.
Dictionary used to map progress id token to its corresponding instance containing the progress object and the necessary fields to report the results.
Object used to lock the access to and .
State from the formatter that owns this tracker.
Gets or sets the the next id value to assign as token for the progress objects.
Initializes a new instance of the class.
The object that ultimately owns this tracker.
The formatter that owns this tracker.
Gets the id of the request currently being serialized so the converter can use it to create the request-progress map.
Converts given to its type.
The type which may implement .
The from given object, or if no such interface was found in the given .
Checks if a given implements .
The type which may implement .
true if given implements ; otherwise, false.
Checks if a given implements .
The type which may implement .
true if given implements ; otherwise, false.
Checks if a given is a closed generic of .
The type which may be .
true if given is ; otherwise, false.
Gets a type token to use as replacement of an implementing in the JSON message.
The object which should implement .
The assigned typed token.
Gets the object associated with the given progress id.
The key to obtain the object from .
Output parameter to store the obtained object.
true if the object was found with the specified key; otherwise, false.
This overload creates an that does not use named arguments in its notifications.
The type of the value to be reported by .
This overload creates an that does not use named arguments in its notifications.
Creates a new instance of to use on the receiving end of an RPC call.
The instance used to send the notification.
The token used to obtain the instance from .
A generic type whose first generic type argument is to serve as the type argument for the created .
to issue $/progress notifications using named args; to use positional arguments.
Class used to keep relevant information of an object that implements .
Gets the of .
Gets the instance of the object implementing .
Initializes a new instance of the class.
The object implementing .
The token associated with this progress object.
Gets the actual reported by .
Gets the token associated with this progress object.
Invokes using the given typed value.
The value to be reported.
Class that implements and sends notification when reporting.
Initializes a new instance of the class.
The instance used to send the notification.
The progress token used to obtain the instance from .
to use named arguments; to use positional arguments.
Send a norification using the stored instance.
The typed value that will be send in the notification to be reported by the original instance.
Tracks objects that get marshaled using the general marshaling protocol.
A map of outbound request IDs to handles that are keys in the dictionary.
This collection is used to avoid memory leaks when marshaled objects have already been converted to a token for an outbound *request*
and the request ends up not being transmitted for any reason.
It will only contain the data until the request is either aborted or a response is received.
Defines the values of the "__jsonrpc_marshaled" property in the .
Returns the cached list of applied to
.
The type to get attributes from.
The list of applied to
.If an invalid set of
attributes are applied to
. This could happen if
or
values are duplicated, or if an
optional interface is not marked with or it is not a valid marshalable
interface.
Prepares a local object to be marshaled over the wire.
The object to be exposed over RPC.
The marshalable interface type of as declared in the RPC contract.
A token to be serialized so the remote party can invoke methods on the marshaled object.
Creates a proxy for a remote object.
The interface the proxy must implement.
The token received from the remote party that includes the handle to the remote object.
The options to feed into proxy generation.
The generated proxy, or if is null.
Throws if is not a valid marshalable interface.
This method doesn't validate that has the
attribute.
The interface to validate.
When is not a valid marshalable interface: this
can happen if has properties, events or it is not disposable.
Releases memory associated with marshaled objects.
The handle to the object as created by the method.
if the was created by (and thus the original object owned by) the remote party; if the token and object was created locally.
Defines the values of the "lifetime" property in the .
The marshaled object may only be invoked until the containing RPC call completes. This value is only allowed when used within a JSON-RPC argument.
No explicit release using `$/releaseMarshaledObject` is required.
The marshaled object may be invoked until `$/releaseMarshaledObject` releases it. This is the default behavior when the `lifetime` property is omitted.
A collection of target objects and their map of clr method to values.
A list of event handlers we've registered on target objects that define events. May be if there are no handlers.
A lazily-initialized list of objects to dispose of when the JSON-RPC connection drops.
Gets the for a previously discovered RPC method, if there is one.
The name of the method for which the attribute is sought.
The list of parameters found on the method, as they may be given to .
Note this list may omit some special parameters such as a trailing .
Searches for a method to dispatch an incoming request to.
The incoming request.
Receives information about the search. Check to see if an exact signature match was found.
A value indicating whether the requested method name matches any that we accept. Use on to confirm that an exact signature match is found.
Adds the specified target as possible object to invoke when incoming messages are received.
The type whose members define the RPC accessible members of the object.
If this type is not an interface, only public members become invokable unless is set to true on the argument.
Target to invoke when incoming messages are received.
A set of customizations for how the target object is registered. If , default options will be used.
to receive an that can remove the target object; otherwise.
An object that may be disposed of to revert the addition of the target object. Will be null if and only if is .
When multiple target objects are added, the first target with a method that matches a request is invoked.
Adds a new RPC interface to an existing target registering additional RPC methods.
The interface type whose members define the RPC accessible members of the object.
Target to invoke when incoming messages are received.
A set of customizations for how the target object is registered. If , default options will be used.
An optional object that may be disposed of to revert the addition of the target object..
Adds a handler for an RPC method with a given name.
The method or delegate to invoke when a matching RPC message arrives.
This method may accept parameters from the incoming JSON-RPC message.
An instance of the type that defines which should handle the invocation.
A description for how this method should be treated.
It need not be an attribute that was actually applied to .
An attribute will *not* be discovered via reflection on the , even if this value is .
The to schedule the method invocation on instead of the default one specified by the property.
Gets a dictionary which maps a request method name to its clr method name via value.
Type to reflect over and analyze its methods.
Dictionary which maps a request method name to its clr method name.
Given a type it will extract all events in the type hierarchy. It deals correctly with
interfaces. Note that it will return duplicates if they appear multiple times in the hierarchy.
Type to reflect over and analyze its events.
A list of EventInfos found.
Adds a new RPC interface to an existing target registering RPC methods.
The methods to bers of the object.
Target to invoke when incoming messages are received.
A set of customizations for how the target object is registered. If , default options will be used.
An optional object that may be disposed of to revert the addition of the target object.
Get the , which may appear on the method itself or the interface definition of the method where applicable.
The method to search for the attribute.
The attribute, if found.
Get the , which may appear on the method itself or the interface definition of the method where applicable.
The method to search for the attribute.
The attribute, if found.
A class whose disposal will revert certain effects of a prior call to .
Helper methods for message formatter tracker classes.
A generic interface. We only need the generic type definition, but since C# doesn't let us pass in open generic types, use as a generic type argument.
Dictionary to record the calculation made in to obtain the type from a given .
Gets the generic type definition for whatever type parameter was given by .
Extracts some interface from a given , if it is implemented.
The type which may implement .
The type from given object, or if no such interface was found in the given .
Checks if a given implements .
The type which may implement .
true if given implements ; otherwise, false.
Checks whether the given type is an interface compatible with .
The type that may be deserialized.
if is a closed generic form of ; otherwise.
Checks whether the given type is an interface compatible with .
The type that may be deserialized.
if is a closed generic form of ; otherwise.
Attribute which identifies methods that should not be invokable over RPC.
When adding an RPC target object via or other APIs,
all public methods on the object default to being exposed to invocation by the client.
When is set, even more methods are exposed.
Applying this attribute to any method will ensure it can never be invoked directly by the RPC client.If and are applied to the same method,
an exception will be thrown at the time of adding the object as an RPC target.
Attribute which changes the name by which this method can be invoked over JSON-RPC.
If applied on a method, the method's CLR name can no longer be used for remote invocation.
This attribute should be used when rpc message method names can be different from the actual CLR method names.
Useful in cases where rpc message method names contain illegal characters for CLR method names, i.e. "text/OnDocumentChanged".
If methods are overloaded, each overload must define its own with all the same values.
Conflicts will result in error being thrown during construction.
If methods are overridden, the base class can define a and derived classes will inherit the attribute.
If derived class and base class have conflicting values for a method, an error will be thrown during construction.
Initializes a new instance of the class.
Replacement name of a method.
Initializes a new instance of the class.
Gets the public RPC name by which this method will be invoked.
May be if the method's name has not been overridden.
Gets or sets a value indicating whether JSON-RPC named arguments should all be deserialized into the RPC method's first parameter.
Gets or sets a value indicating whether JSON-RPC named arguments should be used in callbacks sent back to the client.
The default value is .
An example of impact of this setting is when the client sends an argument and this server
will call on that argument.
The notification that the server then sends back to the client may use positional or named arguments in that notification.
Named arguments are used if and only if this property is set to .
Backing field for the lazily initialized property.
Designates an interface that is used in an RPC contract to marshal the object so the receiver can invoke remote methods on it instead of serializing the object to send its data to the remote end.
Learn more about marshable interfaces.
Attribute to be used on an interface marked with to indicate that the
marshalable object may also implement the interface .
When an object that implements is marshaled as its base interface marked with
, is included in the
StreamJsonRpc message allowing the creation of a proxy which also implements .
If a message is received containing no values, for a marshalable interface that
has known optional interfaces, a proxy will be created using the base interface. Unknown
values will be ignored when creating the proxy.
is honored only when an object is marshaled through an RPC
method that used exactly the interface the attribute is assigned to:
attributes applied to interfaces extending or extended from
the one the attribute is assigned to are ignored.
Initializes a new instance of the class.
The code to be serialized to specify that the marshaled object proxy should
be generated implementing the interface.
values must be unique across the different optional interfaces of the
type this attribute is applied to. Because is serialized when
transmitting a marshaled object, its value should never be reassigned to a different optional interface when
updating RPC interfaces.
The of the known optional interface that the marshalable
object may implement.
Gets the of the known optional interface that the marshalable object may implement.
Gets the code to be serialized to specify that the marshaled object proxy should be generated implementing the
interface.
Represents the dispatch target of an incoming request.
A collection of error messages. May be null until the first message is added.
Gets all the exceptions thrown while trying to deserialize arguments to candidate parameter types.
Represents the ID of a request, whether it is a number or a string.
Initializes a new instance of the struct.
The ID of the request.
Initializes a new instance of the struct.
The ID of the request.
Gets an empty (absent) ID.
Gets the special value for an explicitly specified request ID.
Gets the ID if it is a number.
Gets the ID if it is a string.
Gets a value indicating whether this request ID is explicitly specified as the special "null" value.
Gets a value indicating whether the request ID was not specified (i.e. no string, number or null was given).
Gets the ID as an object (whether it is a , a or null).
Gets the ID if it is a number, or -1.
Tests equality between two values.
The first value.
The second value.
if the values are equal; otherwise.
Tests inequality between two values.
The first value.
The second value.
if the values are equal; otherwise.
A strongly-typed resource class, for looking up localized strings, etc.
Returns the cached ResourceManager instance used by this class.
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
Looks up a localized string similar to AddRpcInterfaceToTarget parameter is not an interface.
Looks up a localized string similar to Both readable and writable are null..
Looks up a localized string similar to A CancellationToken is only allowed as the last parameter..
Looks up a localized string similar to This cannot be done after GetAsyncEnumerator has already been called..
Looks up a localized string similar to "{0}" is not an interface..
Looks up a localized string similar to .NET methods '{0}' and '{1}' cannot both map to the same request method name: '{2}'..
Looks up a localized string similar to All overloads and overrides of the '{0}' method must share a common value for {1}.{2}..
Looks up a localized string similar to A method with the same name and equivalent parameters has already been registered..
Looks up a localized string similar to The JSON-RPC connection with the remote party was lost before the request could complete..
Looks up a localized string similar to Got a request to execute '{0}' but have no callback object. Dropping the request..
Looks up a localized string similar to This enumeration has already prefetched elements once..
Looks up a localized string similar to The value {0} is not among the recognized or supported members of the enum type..
Looks up a localized string similar to Error writing JSON RPC Message: {0}: {1}.
Looks up a localized string similar to Error writing JSON RPC Result: {0}: {1}.
Looks up a localized string similar to Failure deserializing incoming JSON RPC '{0}': {1}.
Looks up a localized string similar to Deserializing JSON-RPC argument with name "{0}" and position {1} to type "{2}" failed: {3}.
Looks up a localized string similar to Deserializing JSON-RPC result to type {0} failed with {1}: {2}.
Looks up a localized string similar to A fatal exception was thrown from the server method {0}: {1}.
Looks up a localized string similar to The buffer is empty. Call the async method to fill it first..
Looks up a localized string similar to Unable to cast given Type to IProgress<T>.
Looks up a localized string similar to The configuration is locked because this formatter has already been associated with a JsonRpc instance..
Looks up a localized string similar to Failed parsing Content-Length header into a positive integer..
Looks up a localized string similar to The size of the message header exceeds the maximum supported size..
Looks up a localized string similar to This operation is only appropriate for inbound messages..
Looks up a localized string similar to This operation is not allowed after listening for messages has started..
Looks up a localized string similar to This operation is not allowed before listening for messages has started..
Looks up a localized string similar to JSON RPC must not be null..
Looks up a localized string similar to Conflicting JsonRpcMethodAttribute and JsonRpcIgnoreAttribute found on the same method: {0}..
Looks up a localized string similar to {0} is not a valid marshaled interface because it has events..
Looks up a localized string similar to {0} is not a valid marshaled interface because it has properties..
Looks up a localized string similar to {0} is not a valid marshaled interface because doesn't extend IDisposable..
Looks up a localized string similar to This tracked object cannot be included in a notification. Only messages including an "id" property are supported..
Looks up a localized string similar to This tracked object should not be part of any response or notification..
Looks up a localized string similar to {0} has ref or out parameter(s), which is not supported.
Looks up a localized string similar to {0} parameter(s) (excluding any CancellationToken): {1}, but the request supplies {2}.
Looks up a localized string similar to {0} parameters are not compatible with the arguments provided in the request..
Looks up a localized string similar to Listening must be started first..
Looks up a localized string similar to This cannot be done after listening has started..
Looks up a localized string similar to A non-negative integer is required..
Looks up a localized string similar to Out of band streams/pipes are not supported in this configuration. Have you set a MultiplexingStream on the formatter?.
Looks up a localized string similar to This operation is only appropriate for outbound messages..
Looks up a localized string similar to Parameter is not in the form of a single object.
Looks up a localized string similar to JSON-RPC 1.0 does not support named arguments (parameters passed within an object). Use positional arguments (parameter arrays) or set protocol version to 2.0..
Looks up a localized string similar to A positive integer is required..
Looks up a localized string similar to Reached end of stream..
Looks up a localized string similar to Reading JSON RPC from the stream failed with {0}: {1}.
Looks up a localized string similar to Relay connection has already been established..
Looks up a localized string similar to An argument was not supplied for a required parameter..
Looks up a localized string similar to This property name is reserved by the JSON-RPC spec or this library..
Looks up a localized string similar to Response is not error..
Looks up a localized string similar to Failed to serialize the response..
Looks up a localized string similar to Response is in an unexpected format. Only error and result are supported: {0}.
Looks up a localized string similar to Optional interface declarations should be unique. {0} has the same optional interface declared multiple times..
Looks up a localized string similar to Optional interface codes should be unique. {0} has the same optional interface code used multiple times..
Looks up a localized string similar to {0} is not marked with the RpcMarshalable attribute..
Looks up a localized string similar to No method by the name '{0}' is found..
Looks up a localized string similar to An error occured during serialization..
Looks up a localized string similar to Stream has been disposed.
Looks up a localized string similar to The stream must be readable..
Looks up a localized string similar to The stream must be writeable..
Looks up a localized string similar to The {0} and {1} parameters exceed length of array..
Looks up a localized string similar to A target object should be supplied if and only if the method is not static..
Looks up a localized string similar to The task is not completed..
Looks up a localized string similar to The task was cancelled..
Looks up a localized string similar to Text encoding is not supported because the formatter "{0}" does not implement "{1}"..
Looks up a localized string similar to The length of this list must equal the length of the arguments list..
Looks up a localized string similar to Unable to find method '{0}/{1}' on {2} for the following reasons: {3}.
Looks up a localized string similar to Unexpected error processing JSON-RPC message: {0}.
Looks up a localized string similar to Unexpected null key encountered while deserializing map..
Looks up a localized string similar to A response was received without a request having been sent..
Looks up a localized string similar to Unexpected token '{0}' while parsing header..
Looks up a localized string similar to This remote object no longer exists..
Looks up a localized string similar to Unable to recognize incoming message as one the JSON-RPC 2.0 defined message types..
Looks up a localized string similar to Incoming JSON-RPC message did not conform to a recognized pattern..
Looks up a localized string similar to Unsupported event handler type on "{0}". Only EventHandler and EventHandler<T> are supported..
Looks up a localized string similar to Generic methods are not supported..
Looks up a localized string similar to Unsupported JSON-RPC protocol version {0}. The supported protocol versions are: {1}.
Looks up a localized string similar to Method "{0}" has unsupported return type "{1}". Only Task-returning methods are supported..
Looks up a localized string similar to Properties are not supported for service interfaces..
Looks up a localized string similar to This operation can only be performed once on this object..
Initializes a new instance of the class.
The value that should be used in the object graph to be sent over RPC, to trigger marshaling.
The to use when adding this object as an RPC target.
Immediately terminates the marshaling relationship.
This releases resources allocated to facilitating the marshaling of the object
and prevents any further invocations of the object by the remote party.
If the underlying object implements then its
method is also invoked.
Gives a dynamic assembly the ability to skip CLR visibility checks,
allowing the assembly to access private members of another assembly.
The constructor.
The constructor.
The property.
The assembly builder that is constructing the dynamic assembly.
The module builder for the default module of the .
This is where the special attribute will be defined.
The set of assemblies that already have visibility checks skipped for.
The constructor on the special attribute to reference for each skipped assembly.
Initializes a new instance of the class.
The builder for the dynamic assembly.
The builder for the default module defined by .
Gets the set of assemblies that a generated assembly must be granted the ability to skip visiblity checks for
in order to access the specified type.
The type which may be internal.
The set of names of assemblies to skip visibility checks for.
Add attributes to a dynamic assembly so that the CLR will skip visibility checks
for the assemblies with the specified names.
The names of the assemblies to skip visibility checks for.
Add an attribute to a dynamic assembly so that the CLR will skip visibility checks
for the assembly with the specified name.
The name of the assembly to skip visibility checks for.
Gets the constructor to the IgnoresAccessChecksToAttribute, generating the attribute if necessary.
The constructor to the IgnoresAccessChecksToAttribute.
Defines the special IgnoresAccessChecksToAttribute type in the .
The generated attribute type.
The JSON-RPC method name used to send/receive cancellation requests.
The for the method.
A map of id's from inbound calls that have not yet completed and may be canceled,
to their instances.
Initializes a new instance of the class.
The connection that this strategy is associated with.
Gets the connection that this strategy is associated with.
Cancels an inbound request that was previously received by .
The ID of the request to be canceled.
The name of the only parameter MUST be "id" in order to match the named arguments in the JSON-RPC request.
An abstract base class for for sending and receiving messages over a
reading and writing pair of objects.
Initializes a new instance of the class.
The stream used to transmit messages. May be null.
The stream used to receive messages. May be null.
The formatter to use to serialize instances.
Gets a value indicating whether this message handler has a receiving stream.
Gets a value indicating whether this message handler has a sending stream.
Gets the stream used to transmit messages. May be null.
Gets the stream used to receive messages. May be null.
Disposes resources allocated by this instance.
when being disposed; when being finalized.
Calls on the ,
or equivalent sending stream if using an alternate transport.
A that completes when the write buffer has been transmitted.
A formatter that emits UTF-8 encoded JSON where user data should be serializable via the .
The to use for the envelope and built-in types.
UTF-8 encoding without a preamble.
Retains the message currently being deserialized so that it can be disposed when we're done with it.
Initializes a new instance of the class.
Gets or sets the options to use when serializing and deserializing JSON containing user data.
Initializes a new instance of the class
for use with an incoming message.
The incoming message.
The serializer options to use.
Initializes a new instance of the class
for use with an outcoming message.
The serializer options to use.
Tracks recursion count while serializing or deserializing an exception.
Adds compatibility with DataContractSerializer attributes.
To enable this resolver, add the following when creating your instance:
Initializes a new instance of the class.
Gets the fallback resolver to use for types lacking a .
The default value is an instance of .
Initializes this object to represent a message.
Cleans out this object to release memory and ensure throws if someone uses it after deactivation.
Reads an value from a buffer using big endian.
The sequence of bytes to read from. Must be at least 4 bytes long.
The read value.
Reads an value to a buffer using big endian.
The buffer to read from. Must be at most 4 bytes long.
The read value.
Writes an value to a buffer using big endian.
The buffer to write to. Must be at least 4 bytes long.
The value to write.
Copies a to an .
The type of element to copy.
The sequence to read from.
The target to write to.
Converts a PascalCase identifier to camelCase.
The identifier to convert to camcelCase.
The camelCase identifier. Null if is null.
Originally taken from Newtonsoft.Json.
A message handler for the class
that uses as the transport.
Initializes a new instance of the class
that uses the to serialize messages as textual JSON.
The used to communicate.
This will not be automatically disposed of with this .
Initializes a new instance of the class.
The used to communicate.
This will not be automatically disposed of with this .
The formatter to use to serialize instances.
The size of the buffer to use for reading JSON-RPC messages.
Messages which exceed this size will be handled properly but may require multiple I/O operations.
Gets the used to communicate.
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