Commit Graph
426 Commits
Author SHA1 Message Date
Fuyang LiuandGitHub 0b535985c8 Remove grpc-timeout header from reserved headers (#603) 2021-04-13 09:28:02 +02:00
Joel HönerandGitHub 1d2754feba fix(codec): Allocate inbound buffer once (#578)
Gets rid of reallocs when receiving large messages, increasing throughput by about 30%-40%.
2021-04-07 19:34:12 -04:00
Tom DyasandGitHub 0d05aa0d02 feat: Expose status constructors (#579) 2021-04-07 17:39:05 -04:00
Greg MeltonandGitHub 480a79409c feat(build): Add prostoc_args (#577) 2021-04-07 17:36:46 -04:00
Dirkjan OchtmanandGitHub 380049daf8 Improve comment on Channel::builder() (#597) 2021-04-07 14:26:33 +02:00
Junichi SugiuraandGitHub db22c3568d Fix ListFeaturesStream return type on RouteGuide Tutorial (#586) 2021-04-04 21:06:33 +02:00
Amr HassanandGitHub 830b305b98 Fix docstring typo (#593) 2021-03-31 13:32:46 +02:00
Ben SullyandGitHub 6c898a239f Use fully qualified path for futures_core::Stream in codegen (#591) 2021-03-28 19:31:20 +02:00
Greg MeltonandGitHub 2788628916 Fix Prost codec tests and cfg (#584) 2021-03-20 18:07:01 +01:00
Lucio Franco 74148549ff Add readme to reflection 2021-03-17 16:35:36 +00:00
Lucio FrancoandGitHub db0909382b fix(reflection): Depend on correct version of build (#582) 2021-03-17 12:31:52 -04:00
David PedersenandGitHub 7889c7ff97 Prepare 0.4.1 release (#580) 2021-03-16 17:39:57 +01:00
UebelAndreandGitHub ea56e2e2b8 feat(build): Use RUSTFMT to find rustfmt binary (#566) 2021-03-11 10:47:07 -05:00
Tom DyasandGitHub 61555ff2b5 feat(build): Support compiling well-known protobuf types (#522) 2021-02-23 16:21:03 -05:00
Hirochika MatsumotoandGitHub 49d517fac9 Remove unneeded backquote (#564) 2021-02-17 11:28:28 +01:00
c54f24721c feat: Implement gRPC Reflection Service (#340)
Co-authored-by: Samani G. Gikandi <[email protected]>
2021-02-16 11:07:51 -05:00
Ana HobdenandGitHub f49d4bdf99 chore: add FromStr for Endpoint (#558)
This is particularly handy when combined with `clap::value_t`.

Here's demo of it working with Clap:

```bash
cargo +stable init --bin tonic-demo
cd tonic-demo
cat <<-EOF >> Cargo.toml
  clap = "*"
  tonic = { path = "../hyperium/tonic/tonic" }
EOF
cat <<-EOF > src/main.rs
    use clap::{value_t, App, Arg};
    use tonic::transport::Endpoint;
    fn main() {
        let matches = App::new("tonic-demo")
            .arg(Arg::with_name("host"))
            .get_matches();
        let x = value_t!(matches.value_of("host"), Endpoint);
        println!("{:?}", x);
    }
EOF
cargo +stable run -- https://127.0.0.1:443
```

Signed-off-by: Ana Hobden <[email protected]>
2021-02-13 20:49:10 +01:00
Max BruceandGitHub 4f5e160679 feat(build): Add disable_package_emission option to tonic-build (#556) 2021-02-12 10:59:44 -05:00
David PedersenandGitHub ca3b9a1df1 fix: Depend on at least tower 0.4.4 (#554)
In tower 0.4.0 we missed a couple of re-exports that tonic 0.4.0 depends
on. So tonic really depends on tower at least version 0.4.1. Since
specifying your tower depedency as 0.4 means you might get 0.4.0, you
might get build errors when updating tonic. Such as [#553] and [#552].

This fixes that by bumping tonic's dependency on tower to 0.4.4. That
means users will get at least tower version 0.4.4, but semver compatible
updates are still allowed.

Fixes https://github.com/hyperium/tonic/issues/553

[#553]: https://github.com/hyperium/tonic/issues/553
[#552]: https://github.com/hyperium/tonic/issues/552
2021-02-12 10:58:54 -05:00
Daniel MangumandGitHub cb9ed18518 Update tokio dependencies in tutorials to be compatible with tonic 0.4 (#549)
Bumps routeguide tutorial dependency to tokio 1.0 for compatability with
tonic 0.4. Also adds required rt-multi-thread feature and drops unused
and now unsupported stream feature.

Signed-off-by: hasheddan <[email protected]>
2021-02-02 14:22:03 -05:00
16yuki0702andGitHub 07d2f9825f Fix helloworld tutorial. (#546)
updated tutorial to use tokio 1.x.
2021-02-02 11:22:17 -05:00
Fuyang LiuandGitHub 729308b65b Better example code for google protos (#542)
* Better example code for google protos

* Try fix windows build

* Try fix windows build

* Remove generated code in repo
2021-01-21 13:59:23 -05:00
Jordan GouldandGitHub 4fe5beb353 Update Warp dependency in examples/Cargo.toml (#541) 2021-01-19 19:34:45 -05:00
Lucio Franco e511f17c1c Fix tonic-health cargo path issues 2021-01-15 13:56:24 -05:00
Lucio FrancoandGitHub fda2d689d4 chore: Prepare 0.4 release (#538)
* Prepare `0.4` release

* Fix cargo issues
2021-01-15 13:38:36 -05:00
Lucio FrancoandGitHub a7778ad166 feat(transport): Move error! to debug! (#537) 2021-01-15 12:51:28 -05:00
dafea9adee fix(transport): return Poll::ready until error is consumed (#536)
* fix(transport): return Poll::ready until error is consumed

When a lazy connection fails to connect it first
returns Poll::ready from the reconnect service,
yet the subsequent call returns Poll::pending
making tower_balance loop forever.
Instead, on error we return Ready
until the error is consumed in the
call method.

* chore: revert version change

* refactor: Into<Error> bounds for error intead of debug

* Remove fmt::Debug bound for reconnect

Co-authored-by: Helge Hoff <[email protected]>
2021-01-15 12:34:41 -05:00
CameronandGitHub 31936e0513 feat(transport): add max http2 frame size to server. (#529)
* tonic: add max http2 frame size to server.

Exposes option to configure the max http2 frame size used by the
underlying hyper server via the `tonic::transport::Server` builder.

Refs: #264

* fix http2_* methods broken in merge conflict
2021-01-15 12:00:01 -05:00
Lucio FrancoandGitHub 41c51f1c61 feat(transport): Fix TLS accept w/ peer certs (#535)
* feat(transport): Fix TLS accept w/ peer certs

* fix unused var

* fix feature flag imports

* spawn accept task
2021-01-15 11:59:26 -05:00
Lucio FrancoandGitHub 4974604c0b ci: Disable deny workflow (#534) 2021-01-14 16:42:12 -05:00
fdda5ae26a Upgrade to Tokio 1.0.0 ecosystem (#530)
* Upgrade Tonic to Tokio 1.0

Work in progress for updating Tonic to Tokio 1.0. Since tower has not
been released to crates.io, a git dependency is taken instead.

* Upgrade Tonic to Tokio 1.0 phase 2

* tonic: remove tower-* deps

* Apply suggestions from code review

Co-authored-by: Ed Marshall <[email protected]>
Co-authored-by: Lucio Franco <[email protected]>
2021-01-11 12:18:34 -05:00
Alex PearsonandGitHub fe4d5b9d9a fix: gracefully handle bad native certs (#520)
Instead of failing and bailing when a bad cert is found, ignore one-off
errors for bad certs and continue to load the rest of the store.

These one-off errors mostly affect MacOS users, as found in this
rustls-native-certs issue: https://github.com/ctz/rustls-native-certs/issues/4

Fixes: #519
2021-01-07 10:52:13 -05:00
CameronandGitHub a6be8363ed Add h2 error conversion for Status (#509) 2021-01-05 16:04:15 -05:00
CameronandGitHub 6622bb1449 Update tonic logo (#508)
* Use fancy new logo

* Remove shell.nix
2021-01-05 16:03:33 -05:00
Hossein MayboudiandGitHub 9f1957f29d Add SERVICE_UNKNOWN to health.proto (#507)
There is a new field. https://github.com/grpc/grpc/blob/master/doc/health-checking.md
2021-01-05 16:02:59 -05:00
Hossein MayboudiandGitHub 6e5b16ce04 Update routeguide-tutorial.md (#505)
Update external link to async traits
2021-01-05 16:02:27 -05:00
Akhil VelagapudiandGitHub 76de87eec5 Remove unnecessary dependencies in tonic-health (#502)
* remove dependency on bytes

* remove dependency on async-stream
2021-01-05 16:02:13 -05:00
Akhil VelagapudiandGitHub 032302e9d0 don't format generated code in tonic-health (#501) 2021-01-05 16:01:45 -05:00
Julian PopescuandGitHub fc86563b36 feat(tonic): implement From<io::Error> for Status (#500)
Implements the conversion from `std::io::Error` to `tonic::Status`.

**Motivation:** The `io::Error` conversion is currently left as
unimplemented. It either should be implemented or removed if it won't be
implemented.

**Solution:** Implements the conversion from `std::io::Error` to
`tonic::Status`
2021-01-05 16:00:08 -05:00
Michael-J-WardandGitHub 3c2a4a2813 fixes routeguide tutorial URL to async book (#490) 2021-01-05 13:40:42 -05:00
Koki KatoandGitHub e7be352132 transport: impl Service for Channel instead of GrpcService (#482)
* transport: impl Service for Channel instead of GrpcService

This adds tower::Service impl for tonic::transport::Channel
and removes GrpcService impl declaration.

Channel still implements GrpcService, thanks to the general
impl declaration of GrpcService for types who implement Service.

Fixes #481.

* examples: stop using GrpcService to avoid ambiguity

* examples: add timeout example
2021-01-05 13:36:18 -05:00
Pedro CaladoandGitHub 2b9cdb9779 feat(transport): expose HTTP2 server keepalive interval and timeout (#486)
Adds two methods to `transport::server::Server` for setting HTTP2 server
keepalive interval and timeout as exposed by `hyper::server::Builder`.

Fixes #474
2021-01-05 13:35:45 -05:00
Jake GouldingandGitHub f58fcf31d1 Merge trailer and inital headers into status on err (#510)
The C++ gRPC server sometimes returns both headers and trailers. An
excerpt from Wireshark:

```
Stream: HEADERS, Stream ID: 1, Length 136, 200 OK
    Header: :status: 200 OK
    Header: x-middleware: expected value
    Header: content-type: application/grpc
    Header: grpc-accept-encoding: identity,deflate,gzip
    Header: accept-encoding: identity,gzip

Stream: HEADERS, Stream ID: 1, Length 92
    Header: grpc-status: 2
    Header: grpc-message: Unknown
    Header: x-arrow-status: 9
    Header: x-arrow-status-message-bin: VW5rbm93bg
```

Before this commit, only the metadata from the trailer would be
available, missing the `x-middleware` header:

```
MetadataMap {
    headers: {
        "x-arrow-status-message-bin": "VW5rbm93bg",
        "x-arrow-status": "9",
    },
}
```
2020-12-14 14:20:15 -05:00
Luca PalmieriandGitHub 2e964c78c6 feat(transport): Connect lazily in the load balanced channel (#493) 2020-11-18 14:26:49 -05:00
Juan AlvarezandGitHub f1275b611e chore: fix warnings in metadata module (#468) 2020-10-08 09:00:10 -05:00
Tyler HawkesandGitHub 1b03ece2a8 fix(build): Match namespace code with other generated packages (#472) 2020-10-07 11:30:22 -04:00
Juan AlvarezandGitHub 0c69c378fd chore: clippy lints (#467)
* chore: clippy lints
2020-09-29 14:38:49 -05:00
Lucio FrancoandGitHub 9ea4a64a6c examples: Add tower-client example (#466) 2020-09-29 11:16:07 -04:00
Juan AlvarezandGitHub d4899df832 feat(transport): add user-agent header to client requests. (#457)
* Add a default user-agent header to outgoing requests.
* The user agent can be configured through the `Channel` builder.

fixes #453
2020-09-23 18:58:03 -05:00
Juan AlvarezandGitHub e9910d10a7 fix(transport): reconnect lazy connections after first failure (#458)
* fix(transport): reconnect lazy connections after first failure

Channels created with lazy connections never try to reconnect if the
first connection attempt fails. This is because `Reconnect` returns
`Poll::Ready(Err)` on poll_ready and the service is considered dead.

This change passes a flag to Reconnect to signal if the connection
is intended to be lazy, in which case reconnect returns the error on
the next call.

fixes #452
2020-09-23 09:35:42 -05:00