* Rev package:lints
* Add changelog
* Run CI on 3.5.0
* Test with 3.2.0
* Update .github/workflows/dart.yml
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
* Update .github/workflows/dart.yml
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
---------
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
* Small fixes
* Revert changes on file
* Add changelog
* Small fixes in keepalive test
* Add delay
* Fix symbol visibilty
* Add try catch for debugging
* Fail
* fail
* Use for loop
* Use `Map.of` instead of `Map.from` in grpc client.
`Map.of` creates a new map with the same keys, values and *type*
as the original map, when used without type arguments or context type,
where `Map.from` creates a `Map<dynamic, dynamic>`.
(This code failed on an attempt to make `Map.unmodifiable` be more
strictly typed, like `Map.of` instead of `Map.from`, showing that
an intermediate map had type `Map<dynamic, dynamic>` unnecessarily).
Same for using `List.of` instead of `List.from`.
The new code should be (microscopically) more efficient and type safe,
and is forwards-compatible with a stronger type on `Map.unmodifiable`.
(The code can be optimized more. For example
`List.of(list1)..addAll(list2)` can be just `list1 + list2` or
`[...list1, ...list2]`, both of which may know the total number
of elements when doing the initial list allocation.
This is a minimal change to allow the type changes for `.unmodifiable`
to get past this very initial blocker in internal tests.)
* Add changelog and minor version increment.
And my save removes trailing spaces.
* Remove dependency on package:archive
* Test compression on vm only
* Add licenses
* Fix analyze issues
* Fix codec web
* Fix licenses
* Add changelog
* 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.
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.
* 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
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).