* 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
* Make constructors of `GrpcError` const
* Update CHANGELOG.md
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
* Update pubspec.yaml
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
---------
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
* Switch to Dart 3
* Trying to get the new version to run
* Fix test
* Switch CI to Dart 3
* Adapt CI
* Do not run vmservice on chrome
* Typo
* Add skip to not fail on `dart test`
* Add changelog entry
* Changes as per review
Add a way to react to the channel shutdown or termination with an
optional callback.
This is not necessarily the API which I would recommend, but this is the
APi that was already inappropriately shipped and in use internally.
We were using path to the UDS socket itself, which is incorrect `:authority` value.
This was tripping checks in some HTTP2 protocol implementations.
Instead default `:authority` to `localhost`, which in line with other gRPC implementations.
Fixes#576
b272632450 exposed client certificate through
`X509Certificate? get clientCertificate;` getter on `ServiceCall` class. This broke
compilation of `grpc_web` code using DDC, but not dart2js. Turns out that dart2js is
happy to compile any code using `dart:io` (though the result will not run if you try
to use any of those APIs), but DDC rejects such code eagerly. `package:test` runs
tests through `dart2js` so DDC breakage was not really caught by CI.
Unfortunately this discrepancy between DDC and dart2js puts us in some really weird
spot: most of our tests are platform independent, but most of those tests also
pull in `dart:io` through transitive dependencies.
This commit is the most minimal change we could make to allow the code compile both
on the Web and natively.
A proper fix should be to go through tests one-by-one and make sure that those that
need to run on the Web don't import `dart:io`, but we don't have time to do that
right now.
This commit also adds a smoke test to the CI to verify that `grpc_web` example
builds with DDC.
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