* Add proxy to options
* Add proxy connect
* Works now
* Uncomment proxy line
* Revert change
* Doesn't work
* Works
* Fix bug
* Add secure test
* Refine test
* Add changelog
* Changes as per review
* Keepalive tests run!
* Renaming
* Some refactorings
* Find a place where to handle the keepalive manager
* Fix bug
* Make KeepAliveManager independent of transport
* Fix call sites in client
* Add server keepalive handler
* Wire through onDataReceived
* Add ServerKeepAliveManager test
* Refactorings
* Tests kind of run now
* Add shutdown test
* Remove unneeded override
* Remove unneeded mocks
* Send correct error codes and cleanup
* Small changes
* Rename
* Add documentation
* Add test for !_enforcesMaxBadPings
* Refactor tests
* Switch to http2 master branch
* Renaming
* Null shutdownTimer
* Refactor to event-state model
* Smaller refactorings
* Works now
* Switch tests to isA
* Shifting things around
* Split into server and client
* Format
* rename
* Tweaks
* Switch order of optional parameters to make change non-breaking
* Add some leeway to the durations in tests
* Make keepalive tests vm only
* Switch back to onEvent in state
* Switch to published http2
Require 200 HTTP status and a supported Content-Type
header to be present in a response.
When handling malformed responses make effort
to translate HTTP statuses into gRPC statuses as
gRPC protocol specification recommends.
Fixes#421Fixes#458
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
* Added support for compression/decompression, which can be configured through
`ChannelOptions` constructor's `codecRegistry` parameter or adding the
`grpc-accept-encoding` to `metadata` parameter of `CallOptions` on the client
side and `codecRegistry` parameter to `Server` on the server side.
Outgoing rpc can be compressed using the `compression` parameter on the
`CallOptions`.
Closes#6
* 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).
* 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.