Commit Graph
12 Commits
Author SHA1 Message Date
David PedersenandGitHub f33316d5b3 feat(tonic): implement From<Code> for i32
`Code` is already trivial to convert into an `i32` however that isn't
immediately obvious by looking at the docs. This has tripped me up
before.

Implementing `From<Code>` for `i32` should hopefully make it a bit more
obvious.
2021-05-12 16:42:23 +02:00
David PedersenandGitHub c39404d720 build: show all rustfmt output on errors (#621)
Sometimes error output from rustfmt might be printed to stdout instead
of stderr. So to help users debug rustfmt issues this makes stdout get
printed as well.

Fixes https://github.com/hyperium/tonic/issues/600
2021-05-08 16:11:03 +02:00
David PedersenandGitHub 8cfa44110c doc(tonic): mention tonic-reflection in README (#635)
Seems we forgot this one.
2021-05-08 16:09:44 +02:00
David PedersenandGitHub 4a917a32f0 fix(examples): Fix tower examples (#624)
Doing

```rust
let clone = self.inner.clone();
Box::pin(async move {
    let response = clone.call(request).await?;
    Ok(response)
})
```

If `self.inner` is (or contains) a `tower::buffer::Buffer` might panic.

That is because cloning a `Buffer` drops the permit that was acquired in
`poll_ready`, meaning it is no longer ready and panic in `call`.

The solution is to use `mem::replace` to take the ready service and pass
that into the async block.

Fixes https://github.com/hyperium/tonic/issues/545
2021-05-07 09:45:35 +02:00
David PedersenandGitHub 7f1af64527 chore: Prepare tonic 0.4.3 (#617)
* chore: Prepare tonic `0.4.3`

* Small typo fix
2021-04-29 16:57:28 +02:00
David PedersenandGitHub dae31d0e1c feat(tonic): Add Request::set_timeout (#615)
* feat(tonic): Add `Request::set_timeout`

This will set the `grpc-timeout`.

* Expand docs a bit
2021-04-29 15:59:08 +02:00
David PedersenandGitHub 4001665821 chore: Add deny(broken_intra_doc_links) to all crates (#616) 2021-04-29 15:57:21 +02:00
9ff4f7b8e4 feat(transport): Support timeouts with "grpc-timeout" header (#606)
* transport: Support timeouts with "grpc-timeout" header

* Apply suggestions from code review

Co-authored-by: Lucio Franco <[email protected]>

* Timeout -> GrpcTimeout and export TimeoutExpired

* Clean up imports

* Give header name a more proper home

* Add fuzz tests for parsing header value into `grpc-timeout`

* Map `TimeoutExpired` to `cancelled` status

* Recover from timeout errors in the service

* Refactor tests

* Fix CI

* Fix CI, again

Co-authored-by: Lucio Franco <[email protected]>
2021-04-29 10:28:16 +02:00
David PedersenandGitHub d414206736 Use new tower utilities (#560)
* Use new tower utilities

Tower recently introduced `layer_fn` and `ServiceBuilder::option_layer`.
Some very similar things existed in Tonic. This replaces those with what
Tower provides.

* Also use `ServiceBuilder::layer_fn`
2021-04-14 09:26:49 +02:00
David PedersenandGitHub 5bc1aa9371 Mention rust-analyzer.cargo.loadOutDirsFromCheck setting in README (#561)
Fixes https://github.com/hyperium/tonic/issues/512
2021-04-14 09:08:08 +02:00
David PedersenandGitHub 7889c7ff97 Prepare 0.4.1 release (#580) 2021-03-16 17:39:57 +01: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