dart-lang/tools
monorepo.package:lints
.repository
field.null
result to a request caused an exception.Peer.close()
throwing Bad state: Future already completed
.Peer
requests not terminating when the underlying channel is closed.strictProtocolChecks
named parameter to Server
and Peer
constructors. Setting this parameter to false will result in the server not rejecting requests missing the jsonrpc
parameter.RpcException.methodNotFound
in an asynchronous fallback handler would not result in the next fallback being executed.2.2.0
.Server
and related classes can now take an onUnhandledError
callback to notify callers of unhandled exceptions.stream_channel
version 2.xClient
is closed before a request completes, the error sent to that request's Future
now includes the request method to aid in debugging.Client.sendRequest()
now throws a StateError
if the client is closed while the request is in-flight. This avoids dangling Future
s that will never be completed.
Both Client.sendRequest()
and Client.sendNotification()
now throw StateError
s if they're called after the client is closed.
StateError
could be top-leveled if Peer.close()
was called before the underlying channel closed.Breaking change: all constructors now take a StreamChannel
rather than a Stream
/StreamSink
pair.
Client.sendRequest()
and Client.sendNotification()
no longer throw StateError
s after the connection has been closed but before Client.close()
has been called.
The various close()
methods may now be called before their corresponding listen()
methods.
The various close()
methods now wait on the result of closing the underlying StreamSink
. Be aware that in some circumstances StreamController
s' Sink.close()
futures may never complete.
Add Client.isClosed
and Server.isClosed
, which make it possible to synchronously determine whether the connection is open. In particular, this makes it possible to reliably tell whether it's safe to call Client.sendRequest
.
Fix a race condition in Server
where a StateError
could be thrown if the connection was closed in the middle of handling a request.
Improve stack traces for error responses.
done
getter to Client
, Server
, and Peer
.Add a Client
class for communicating with external JSON-RPC 2.0 servers.
Add a Peer
class that's both a Client
and a Server
.
Remove Server.handleRequest()
and Server.parseRequest()
. Instead, new Server()
takes a Stream
and a StreamSink
and uses those behind-the-scenes for its communication.
Add Server.listen()
, which causes the server to begin listening to the underlying request stream.
Add Server.close()
, which closes the underlying request stream and response sink.
stack_trace
.RpcException
when not a map.