Zbigniew Mandziejewicz
8b71a9dab2
Ensure CallOptions merge preserves Web specific options
2020-11-11 15:49:39 +01:00
Lei Liu
52bea07000
Add support for unix domain sockets ( #327 )
...
Fixes #299
2020-11-11 15:43:05 +01:00
Vyacheslav Egorov
cb1c0ea8b3
Update pubspec.yaml, CHANGELOG.md and expand deprecation notice ( #378 )
...
* Opt grpc_web_server.dart out of NNBD.
2020-11-03 14:21:04 +01:00
Zbigniew Mandziejewicz
9f83e124e9
feat: support client interceptors ( #338 )
...
* 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.
2020-11-02 11:13:56 +01:00
Sigurd Meldgaard
21529c6be7
Don't print from server ( #212 )
...
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-10-29 12:57:47 +01:00
Vyacheslav Egorov
7ea15a8160
Propagate cancellation from responses stream to the call ( #376 )
...
It is not enough to just cancel the subscription.
Fixes #368
2020-10-29 12:56:49 +01:00
Andrew Coutts
b6e40c34e3
Add decoded grpc-status-details-bin details to GrpcError ( #349 )
...
Closes #209
2020-10-27 17:07:58 +01:00
Rui Craveiro
3d731e0690
Call to onMetadata handles exceptions ( #342 )
...
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-10-26 15:39:49 +01:00
Michael R Fairhurst
e2f3d74087
Remove unused dart:async imports ( #358 )
...
Since Dart 2.1, Future and Stream have been exported from dart:core
2020-10-25 12:43:15 +01:00
Nic Hite
fa6b127dca
Create gRPC servers and clients with TransportConnections. ( #364 )
...
* Create gRPC servers and clients with TransportConnections.
* switch class ordering to put base class first.
2020-10-05 19:34:39 -07:00
Vyacheslav Egorov
831f5d8cfb
Revert "Not to fail pending requests, just reschedule it ( #303 )" ( #366 )
...
This reverts commit 9ed03b6b96
.
This change prevents client from gracefully handling connection issues and instead just makes it infinitely trying to reconnect.
Closes #339
2020-10-02 22:22:33 +02:00
Nic Hite
a657916168
Add client validation to server credentials ( #363 )
...
* Add ability to validate clients to server credentials.
2020-09-29 11:55:28 -07:00
Nic Hite
a774583de0
Beef up exception handling in gRPC code. ( #360 )
...
* Beef up exception handling in gRPC code.
* Verify default stacktrace isn't used in exceptions
2020-09-29 01:01:18 -07:00
Nic Hite
bb4eab0f1f
Add browser features to Dart gRPC-web for parity with JS implementation. ( #347 )
...
* Add bypassCorsPreflight capability to gRPC-web Dart.
* fix tests and run dartfmt.
* remove print statement
* dartfmt
* Update pubspec.
* Fix changelog.
* Fix tests
* final dartfmt
* Respond to requested changes.
* revert extra newline in changelog
Co-authored-by: Michael Thomsen <mit@google.com>
2020-09-24 21:52:35 -07:00
Wayne Li
afacaa30e0
Remove check for SecurityContext.alpnSupported in security#createSecurityContext ( #353 )
...
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-09-18 10:29:09 +02:00
Vyacheslav Egorov
3414356950
Revert "Support grpc-web in pure dart ( #287 )" ( #351 )
...
This reverts commit c513e1467f
.
The original commit has broken streaming due to limitations of package:http.
2020-09-17 10:59:15 -07:00
Mehmet Fidanboylu
ad2c0f6f3e
Use SecureSocket.connect directly if there's no authority in Credentials ( #343 )
2020-08-27 15:06:54 -07:00
Koichi Ishida
e4947e2909
Encode server error message ( #330 )
2020-07-24 10:20:23 +02:00
Koichi Ishida
98ff843751
Decode gRPC error message ( #326 )
2020-07-20 16:11:19 +02:00
Jonas Finnemann Jensen
449faa80ee
Added Application Default Credentials Support ( #315 )
...
* Application Default Credentials support
* Prepare a 2.2.0 release of grpc
* Update CHANGELOG.md
Co-authored-by: Sigurd Meldgaard <sigurdm@google.com>
Co-authored-by: Sigurd Meldgaard <sigurdm@google.com>
2020-06-11 14:18:30 +02:00
Oleg Maslovsky
9ed03b6b96
Not to fail pending requests, just reschedule it ( #303 )
2020-06-08 10:16:00 +02:00
Robson Araujo
c513e1467f
Support grpc-web in pure dart ( #287 )
...
By using package:http for making connections.
2020-05-12 09:01:36 +02:00
Sigurd Meldgaard
39c751128c
Use tcpNoDelay option for sockets ( #298 )
2020-05-11 12:47:15 +02:00
Jia Hao
03ecb84064
Export more symbols in grpc_connection_interface.dart ( #292 )
...
To create an alternate implementation of ClientChannel, we currently need to import symbols from lib/src which are "private" to the package. This change exports them as part of the public API.
2020-04-16 10:34:59 +02:00
Sigurd Meldgaard
7d3b3749e8
server: Cancel call when the outgoing messages are closed ( #274 )
2020-01-28 09:29:05 +01:00
Igor Demyanov
ae17e712e4
Share port support ( #253 )
...
* Share port support
2019-12-04 09:35:02 +01:00
Sigurd Meldgaard
6061512afa
Grpc-web Handle empty trailers ( #247 )
...
* Grpc-web Handle empty trailers
2019-11-07 10:52:13 +01:00
Sigurd Meldgaard
588c21e542
Avoid sending headers as trailers twice ( #244 )
2019-10-24 09:35:28 +02:00
Nic Hite
7ed8b741cd
Add explicit 'localhost' to tests involving server ( #242 )
...
* Add explicit 'localhost' to tests involving server
* Bump version
* Clean up CHANGELOG
* Revert version bump.
2019-09-30 01:22:16 -07:00
Sigurd Meldgaard
20352dd718
Use host without port as authority when making secure connection ( #238 )
2019-09-09 09:41:56 +02:00
Sigurd Meldgaard
b7be3af34b
Fix use of authority when making a secure connection
2019-08-22 14:26:29 +02:00
Sigurd Meldgaard
992e2dcc29
Improve connection handling ( #231 )
...
* Improve connection handling
* Address review. Add round-trip-test
2019-08-19 15:31:16 +02:00
Sigurd Meldgaard
3aeafa77cb
Improve error handling ( #204 )
...
* Improve error handling
1) Let GrpcError implement exception
As the user is (usually) expected to catch these they should implement
Exception.
There is a bigger clean-up in splitting off the GrpcError.internal as
that seems to be for invariant violations
2) Convert some thrown strings into exceptions.
2019-07-03 09:26:45 +02:00
Sigurd Meldgaard
9d2a469655
Provide scheme as part of audience ( #211 )
2019-06-28 15:24:59 +02:00
Sigurd Meldgaard
dcac905a13
Fix interop ( #207 )
...
* Fix computation of authority
2019-06-27 14:43:15 +02:00
Sigurd Meldgaard
054ac9de3c
Fix imports ( #199 )
2019-06-25 13:00:58 +02:00
Sigurd Meldgaard
91564ff7aa
grpc-web support ( #191 )
...
* grpc-web support
This commits merges the grpc-web branch into master.
It is based on work by https://github.com/fuzzybinary .
2019-06-17 13:31:07 +02:00
Nic Hite
c9c4e40088
Remove unnecessary 'new' and 'const' keywords. ( #186 )
2019-06-04 11:31:01 -07:00
Ivan
c65afe9ec0
Add userAgent for ChannelOptions ( #155 )
...
Add userAgent for ChannelOptions
2019-05-28 12:31:35 +02:00
Sigurd Meldgaard
f3e1e32973
Allow authority for insecure connections ( #179 )
2019-05-23 15:48:46 +02:00
Sigurd Meldgaard
92731e1a71
Cancel `ServerHandler` when `ServerTransportConnection.incomingStreams` is closed ( #164 )
...
* Cancel ServerHandler when connection closes
2019-04-03 14:57:55 +02:00
Sigurd Meldgaard
d7ae930e7f
Revert "Support grpc-web" ( #159 )
...
This reverts commit d58659507c
.
Development of grpc-web will continue on the branch
https://github.com/grpc/grpc-dart/tree/grpc-web until it is ready.
2019-03-18 13:46:50 +01:00
Jeff Ward
d58659507c
Support grpc-web
2019-03-15 12:51:06 +01:00
Sigurd Meldgaard
76159960e2
Add service_api.dart with platform independent exports ( #152 )
2019-01-24 13:44:59 +01:00
Nic Hite
eafca2ab28
Replace Future<Null> with Future<void>. ( #146 )
2019-01-03 08:13:25 +01:00
Alexandre Ardhuin
921f4df0b9
don't throw on closing channel not open ( #128 )
...
Don't throw on closing channel not open
2018-11-12 14:54:11 +01:00
Alexandre Ardhuin
3e3ba6682f
allows async interceptors ( #120 )
...
* allows async interceptors
* prevent chunks to come before starting streaming request
2018-09-18 08:17:39 +02:00
Sigurd Meldgaard
561f8fe716
Make Status codes `static const` instead of `static final`. ( #104 )
...
Make Status codes `static const` instead of `static final`.
This enables using the codes in switch statements and default values.
2018-08-06 13:47:45 +02:00
Sigurd Meldgaard
17ce11f7fc
Allow for non ascii headers ( #103 )
2018-07-19 15:46:23 +02:00
Bob Nystrom
238fd7ec67
Finish migrating to the Dart 2 core library constants. ( #101 )
2018-07-19 15:16:58 +02:00
Michael Thomsen
c32a9e97be
Use new Dart 2 APIs ( #99 )
...
* Upgrade to Dart 2 APIs
* Run dartfmt
* Update CHANGELOG.md
* Update pubspec.yaml
2018-07-13 12:57:18 +02:00
German Saprykin
847a3625e1
Added interceptors. ( #86 )
...
* Add draft implementation of interceptors.
* Fix review comment.
* Revert example files.
* Revert interop files.
* Revert interop files.
* Format.
* Fix typos.
2018-07-09 16:57:07 +02:00
Jakob Andersen
88485bad11
Tweaks. ( #82 )
...
Using address: 'localhost' didn't work as expected in the Docker
environment, so reverting to old behavior.
Fixed a typo.
2018-04-06 11:35:11 +02:00
Jakob Andersen
686ecb3943
Dart 2 fixes ( #77 )
2018-04-05 09:43:42 +02:00
Jakob Andersen
0393703f58
Ensure shutdown and terminate always return a Future<Null>. ( #75 )
...
Even if _transport.finish()/terminate() returns some other kind of
Future.
2018-03-28 14:54:09 +02:00
Jakob Andersen
d9dea0e489
Move TLS credentials for server into a separate class. ( #61 )
...
Add address parameter for server, to control which address to listen to,
and the ability to use an ephemeral port.
2018-03-14 16:38:52 +01:00
Jakob Andersen
40ffab8da5
Split out TLS credentials to a separate class. ( #60 )
...
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().
2018-02-27 10:10:44 +01:00
Jakob Andersen
3f60746689
Fix lint. ( #58 )
2018-02-06 13:31:59 -08:00
Jakob Andersen
7621132097
Authenticated cloud-to-prod interop tests. ( #55 )
...
Added authentication provider classes, and wired up the auth interop
tests.
Refactored connection logic to throw initial connection errors early.
Fixes #53
2018-02-05 23:17:16 +01:00
Jakob Andersen
eb5b80504d
Dart 2.0 fixes. ( #48 )
...
Updated generated code in examples using latest protoc compiler plugin.
Fixed uses-dynamic-as-bottom issues.
2018-01-12 15:20:03 +01:00
Michael Thomsen
a01be59ab4
Change license to Apache to be consistent with other gRPC repos ( #47 )
2018-01-12 15:14:19 +01:00
Jakob Andersen
b38b1cc7a2
Reorganize code for 0.2.0 release. ( #41 )
...
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.
2017-12-15 09:30:56 +01:00
Jakob Andersen
108181c2d2
Added support for metadata providers. ( #39 )
...
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.
2017-12-14 14:32:06 +01:00
Jakob Andersen
7b2ff3e571
Multiplex RPCs on a single connection. ( #34 )
...
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 .
2017-10-12 15:37:29 +02:00
Jakob Andersen
2f118ea043
Preparation for RPC multiplexing ( #31 )
...
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.
2017-09-25 13:51:40 +02:00
Jakob Andersen
05bb6a5d08
Update generated code using latest protoc_plugin. ( #30 )
...
Preparation for updating the call generation logic.
2017-08-23 12:47:48 +02:00
Jakob Andersen
83ee9c2edb
Add TLS support. ( #29 )
...
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.
2017-08-17 09:45:11 +02:00
Jakob Andersen
5c4e50c696
Add timeout handling. ( #28 )
...
Fixes #8 .
2017-07-31 14:47:29 +02:00
Jakob Andersen
1d12c5b87d
Add basic server tests. ( #27 )
2017-07-18 15:14:13 +02:00
Jakob Andersen
0a0a9ffc89
Basic server interoperability tests. ( #25 )
...
Implements the basic server interoperability tests for gRPC compliance.
Compressed tests, TLS, and authentication are not implemented yet, but
basic test cases pass against the C++ gRPC interoperability client.
2017-07-17 16:12:13 +02:00
Jakob Andersen
ac317e6e4d
Add basic client tests. ( #26 )
2017-07-17 15:11:45 +02:00
Jakob Andersen
ed5e8fb43e
Use correct gRPC error codes. ( #23 )
...
Copied error code definitions from source grpc/grpc repo.
Fixes #7 .
2017-07-10 12:53:08 +02:00
Jakob Andersen
a5e740c41a
Custom metadata and call cancellation. ( #22 )
...
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 .
2017-07-07 14:31:36 +02:00
Kevin Moore
4b8d407eae
Fixes to make Travis Green ( #17 )
...
* Remove unused import
* Only analyze lib and test dirs
- work-around for https://github.com/dart-lang/sdk/issues/26212
* enable a few more lints
* remove unused field
2017-06-29 13:11:29 -07:00
Jakob Andersen
bf8fb94353
Initial import. ( #2 )
...
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.
2017-06-28 14:53:42 +02:00