* Added support for client interceptors, which can be configured through
Client constructor's interceptors parameter. Interceptors will be
executed by Client.$createStreamingCall and Client.$createUnaryCall.
Using interceptors requires regenerating client stubs using version 19.2.0 or
newer of protobuf compiler plugin.
* Client.$createCall is deprecated because it does not invoke client
interceptors.
We did not have any before which allowed for regressions like #306 to
slip through. Unfortunately we can't test gRPC-web implementation
in pure Dart because we don't have a server side implementation of
the protocol. Instead we add a dependency on the third party
gRPC-web proxy (grpcwebproxy by Improbable Engineering - the choice made
purely based on the simplicity of installation) which forwards all
request gRPC server (written in Dart).
This reverts commit 9ed03b6b96.
This change prevents client from gracefully handling connection issues and instead just makes it infinitely trying to reconnect.
Closes#339
* Update test dependencies
* Revert "Update test dependencies"
This reverts commit 86a6ae2dad.
* Update test dependencies
* Fix use of mockito when
* NOP
* Revert "NOP"
This reverts commit dec6a5a57a.
* Upgrade mockito
* Increase SDK dependency
* Increase deleay to trigger timeout
* Reintroduce include
* Relax sdk version constraint
Add a 'bad certificate handler' to the new ChannelCredentials, which can
be used to override certificate validation (for example, to allow
auto-generated self-signed certificates during development).
Also fixed a bug in Server.shutdown().
Split the large client/server.dart files into smaller pieces. This is in
preparation for splitting the HTTP/2 dependencies into a separate file
and make it easier to implement other transports.
Provide a hook for metadata providers that need to generate their
metadata for each RPC. An example is authorization, where the provider
may need to refresh a token before it can provide the header.
Add stackdriver logging examplei to demonstrate calling a Google API.
Updated other examples to protobuf 0.6.0 (protoc plugin 0.7.8).
Updated SDK requirement to Dart 1.24.3, which adds support for creating a SecurityContext that trusts built-in roots, and support for ALPN on macOS.
A Channel will now multiplex RPCs on a single managed connection. The
connection will attempt to reconnect on failure, and will close the
underlying transport connection if no RPCs have been made for a while.
Part of #5.
First stage of separating Connection from Channel. A Channel manages
multiple Connections, and chooses which Connection to send an RPC on.
In this change, the Channel still creates a Connection for each RPC.
Managing the Connection life-cycle comes in a later change.
Added ChannelOptions, which are used to specify options on a
ClientChannel. At the moment, only TLS options are supported.
Moved CallOptions from ClientChannel to a new Client stub base class.
Per-RPC call options are now specified on the stub instead of on the
channel, allowing several stubs with different options to share the same
channel.
Added support for TLS on the server side. TLS options are specified when
creating the Server.
Added an example showing how to send/receive custom metadata, and handle
call cancellation.
Implemented the remaining parts of metadata and cancel handling.
Addresses part of #8 and #12.
What works:
* Client and server can talk to each other, all 4 RPC variants.
* Client can talk to Go gRPC server.
What (probably) doesn't work:
* Anything else.