Commit Graph
54 Commits
Author SHA1 Message Date
Lucio FrancoandGitHub ff331199e4 feat(core): Default encoding/decoding limits (#1335)
* feat(core): Default encoding/decoding limits

This PR adds new defaults for both client and server max
encoding/decoding message size limits. By default, the max message
decoding size is `4MB` and the max message encoding size is
`usize::MAX`.

This is follow up work from https://github.com/hyperium/tonic/pull/1274

BREAKING: Default max message encoding/decoding limits

* update generated code
2023-03-30 16:59:08 +00:00
7a6b20d8ef feat: add GrpcMethod extension into request for client (#1275)
* feat: add GrpcMethod extension into request for client

* refactor: change GrpcMethod fields into private and expose methods instead

* refactor: hide GrpcMethod::new in doc

---------

Co-authored-by: Lucio Franco <[email protected]>
2023-02-23 10:06:45 +00:00
Moncef AOUDIAandGitHub 9f716d8411 feat(codec): Configure max request message size (#1274)
* feat(codec): add max_message_size parameter

resolves #1097

* refactor(client): add max size parameters

* refactor(tonic-build): update server gen template

* refactor(tonic-build): update client template

* fix(tonic-build): update client template

* fix(tonic-build): small typo in server.rs

* fix(tonic-build): client.rs generator

* fix(tonic): add apply max message setting size to server

* fix(test): wrong message size

* fix: doctest + generated rs
2023-02-17 15:58:22 +00:00
Shrutesh PachineelaandGitHub a562a3ce32 fix(build): Allow Services to be named Result (#1203)
closes #1156
2022-12-21 12:07:07 -05:00
tottotoandGitHub bf22a740c3 chore: Update to 2021 edition (#1188) 2022-12-13 15:16:49 -05:00
bouzuyaandGitHub 95e8c8bdbb chore: Internal refactor to remove repeitition (#1144) 2022-11-30 14:32:49 -05:00
Lucio FrancoandGitHub c4525ba6ad feat(build): Add CodeGenBuilder (#1154)
This commit adds a new `CodeGenBuilder` that replaces the
client/server generate fn with a builder stlye that allows
adding config items in an non-breaking way. This also deprecates
both of the client/server generate fn in favor of the builder ones.
2022-11-28 12:10:44 -05:00
bouzuyaandGitHub e188521149 feat(build): Add disable_comments option (#1127) 2022-11-08 11:08:19 -05:00
Lucio FrancoandGitHub 1f5bc9b9d5 feat(build): Add build_transport builder option (#1130) 2022-11-04 11:04:23 -04:00
Lucio FrancoandGitHub 10f6d2f1a9 feat: Add Grpc::with_origin for clients (#1017) 2022-06-20 09:36:51 -04:00
Marcus GriepandGitHub a585a72293 feat!: remove codegen dependency on compression feature (#1004) 2022-06-13 17:48:27 -04:00
Brandon WilliamsandGitHub de2e4ac077 feat(build): Better support for custom codecs (#999)
BREAKING CHANGE: `CODEC_PATH` moved from const to fn
2022-05-05 12:52:03 -04:00
4533a6e20e fix(build): Reduce Default bound requirement (#974)
Co-authored-by: David Pedersen <[email protected]>
2022-04-20 15:38:38 -04:00
Alex PearsonandGitHub bf44940f9b fix: Handle interceptor errors as responses (#840) (#842) 2022-02-15 15:10:35 -05:00
cssivisionandGitHub a337f132a5 fix(build): clippy warning for must_use (#892) 2022-01-27 11:44:25 -05:00
tottotoandGitHub 366d888a4b chore: Fix clippy lints (#881) 2022-01-12 16:32:40 -05:00
Lucio FrancoandGitHub 23c1392fb7 fix(tonic): Remove Sync requirement for streams (#804) 2021-10-24 21:48:05 -04:00
Yotam OfekandGitHub 8c8f4d1251 feat(tonic): add Interceptor trait (#713)
* Expose `Interceptor` trait.

* Revert changes to public API surface.

* Rename types, add deprecated alias for old names.
2021-07-27 11:11:51 -04:00
David PedersenandGitHub 380d81dd86 fix(build): allow services to be named Service (#709)
Fixes https://github.com/hyperium/tonic/issues/676
2021-07-12 16:47:45 +02:00
David PedersenandGitHub 167e8cb5b2 fix(build): remove unnecessary Debug constraint for client streams (#719)
This was accidentally committed as part of
https://github.com/hyperium/tonic/pull/692.

Fixes https://github.com/hyperium/tonic/issues/718
2021-07-12 16:41:09 +02:00
David PedersenandGitHub 4b0ece6d28 chore: fix clippy lints (#707) 2021-07-09 18:23:55 +02:00
Conner BryanandGitHub a948a8f884 feat(build): support adding attributes to clients and servers (#684) 2021-07-08 15:01:28 -04:00
David PedersenandGitHub 0583cff80f feat(codec): compression support (#692)
* Initial compression support

* Support configuring compression on `Server`

* Minor clean up

* Test that compression is actually happening

* Clean up some todos

* channels compressing requests

* Move compression to be on the codecs

* Test sending compressed request to server that doesn't support it

* Clean up a bit

* Compress server streams

* Compress client streams

* Bidirectional streaming compression

* Handle receiving unsupported encoding

* Clean up

* Add note to future self

* Support disabling compression for individual responses

* Add docs

* Add compression examples

* Disable compression behind feature flag

* Add some docs

* Make flate2 optional dependency

* Fix docs wording

* Format

* Reply with which encodings are supported

* Convert tests to use mocked io

* Fix lints

* Use separate counters

* Don't make a long stream

* Address review feedback
2021-07-02 11:25:03 -04:00
David PedersenandGitHub 9478fac979 fix(build): fix with_interceptor not building on Rust 1.51 (#669)
Fixes https://github.com/hyperium/tonic/issues/666
2021-05-27 15:47:42 +02:00
David PedersenandGitHub 4d2667d1cb feat(tonic): make it easier to add tower middleware to servers (#651) 2021-05-19 09:19:58 +02:00
David PedersenandGitHub 4dda4cbcca feat(tonic): Use BoxBody from http-body crate (#622)
As of `http-body` 0.4.1 its has had a `BoxBody` type similar to
`tonic::body::BoxBody`. It also has `Empty` and `Body::map_{data,err}`.

That means all the custom body things we had in tonic can basically be
replaced with that.

Note that this is a breaking change so we should merge this next time we
decide to ship a breaking release.

The breaking changes are:

- `tonic::body::Body` has been removed. I think its fine for users to
depend directly on `http-body` if they need this trait.
- `tonic::body::BoxBody` is now just a type alias for
`http_body::combinators::BoxBody<Bytes, Status>`. So the methods it
previously had are gone. The replacements are
  - `tonic::body::Body::new` -> `http_body::Body::boxed`
  - `tonic::body::Body::map_from` -> `http_body::Body::map_data` and
  `http_body::Body::map_err` depending on which part you want to map.
  - `tonic::body::Body::empty` -> `http_body::Empty`

Additionally a `Sync` bound has been added to a few methods. I actually
don't think this is a breaking change because the old
`tonic::body::Body` trait had `Sync` as a supertrait meaning the `Sync`
requirement was already there.

Fixes https://github.com/hyperium/tonic/issues/557
2021-05-18 10:41:21 +02:00
Tom DyasandGitHub 61555ff2b5 feat(build): Support compiling well-known protobuf types (#522) 2021-02-23 16:21:03 -05:00
Max BruceandGitHub 4f5e160679 feat(build): Add disable_package_emission option to tonic-build (#556) 2021-02-12 10:59:44 -05:00
Tyler HawkesandGitHub f085aba302 fix(build): Allow empty packages (#382)
Fixes #381
2020-06-29 11:24:47 -04:00
James NugentandGitHub 6dbe88d445 fix(build): Implement Debug for client struct
Fixes #298.
2020-03-30 17:06:31 -05:00
Lucio FrancoandGitHub 3cba9f5f6f chore: Fix feature flags and build docs (#311)
Signed-off-by: Lucio Franco <[email protected]>
2020-03-30 12:02:10 -04:00
Lucio FrancoandGitHub 2e082f8b3e chore(build): Refactor codegen traits (#302)
Signed-off-by: Lucio Franco <[email protected]>
2020-03-29 12:57:11 -04:00
Gyusun YeomandGitHub f65cda1ea0 feat(build): Decouple codgen from prost (#170) 2020-03-01 13:52:31 -05:00
Spencer JudgeandLucio Franco 5fc6762435 fix(build): Typo with client mod docstring (#237) 2020-01-14 13:25:17 -05:00
Lucio FrancoandGitHub eba7ec7b32 feat: Add gRPC interceptors (#232)
This change introduces proper gRPC interceptors that are avilable
regardless of the transport used. Each codegen service now produces an
additional method called `with_interceptor` that accepts a
`Interceptor`.

All examples have been updated to use this new style and interop has a
custom `tower::Service` middleware to echo the headers. There is also a
new `interceptor` example that shows basic usage.

BREAKING CHANGE: removed `interceptor_fn` and `intercep_headers_fn` from `transport` in favor of using `tonic::Interceptor`.
2020-01-13 21:26:08 -05:00
Juan AlvarezandLucio Franco 3a5c66d5f2 fix(build): snake_case service names (#190) 2019-12-14 15:08:28 -05:00
Lucio FrancoandGitHub 97d5363e2b fix(build): Remove async ready (#185)
* fix(build): Remove async ready

* fix build
2019-12-13 18:19:23 -05:00
Lucio FrancoandGitHub 0847b67c4e fix(build): Allow creating multiple services in the same package (#173)
BREAKING CHANGE: Build will now generate each service client and server into their own modules.
2019-12-11 16:22:03 -05:00
Lucio FrancoandGitHub 3387ef900f Upgrade to tokio 0.2 (#163) 2019-12-06 00:09:46 -05:00
Lucio FrancoandGitHub 5c2f4dba32 feat(transport): Change channel connect to be async (#107)
This makes it so you can check if the initial connection
is established. Before this we used reconnect which would
lazily attempt to connect. So if you were trying to connect
to a non existant Server you wouldn't find out until after
you attempted your first RPC. This simplifies everything
by allowing you connect before creating the RPC client.

BREAKING CHANGE: `Endpoint::channel` was removed in favor of
an async `Endpoint::connect`.
2019-10-31 14:09:40 -04:00
Lucio FrancoandGitHub a17049f1f7 fix(codec): Remove custom content-type (#104)
This removes custom content-types in favor of
just using `application/grpc`. There is some
confusion around the specification but most
grpc implementations ignore the `+` and
anything after.
2019-10-29 16:12:41 -04:00
Juan AlvarezandLucio Franco 4bb087b5ff feat: Add IntoRequest and IntoStreamingRequest traits (#66) 2019-10-29 16:09:08 -04:00
Daniel PrilikandLucio Franco eea3c0f99a fix(build): Fix missing argument in generate_connect (#95) 2019-10-23 17:46:40 -04:00
Juan AlvarezandLucio Franco 7eda823c9c fix(client): Use Stream instead of TrySteam for client calls (#61) 2019-10-10 11:39:35 -04:00
Lucio FrancoandGitHub 4e1fcece15 fix(codegen): Use wellknown types from prost-types (#49)
This change introduces the ability to let prost-build
provide the fully qualifed type path for types that
start with `google.protobuf`.
2019-10-05 13:16:09 -04:00
Lucio FrancoandGitHub 2670b349f9 fix(codegen): Fix Empty protobuf type and add unimplemented (#26)
* Add license attribute to tonic-build

* fix(codegen): Fix Empty protobuf type and add unimplemented

* Remove syn full feature
2019-10-01 23:46:54 -04:00
Lucio Franco a35ef96a03 Add docs to transport and refactor some api's 2019-09-29 17:04:42 -04:00
Lucio Franco 1d9e3daa07 Remove generated doc comment test 2019-09-29 10:39:57 -04:00
John DonethandLucio Franco 8becd257bc More documentation generation (#12)
* generate rustdoc comments from .proto file comments

* move imports to top of file

* more docs gen

* trait docs

* more docs

* use singular doc gen fn here

* remove pesky space
2019-09-26 19:41:51 -04:00
John DonethandLucio Franco 36d0b1cb04 Generate rustdocs from .proto file comments (#10)
* generate rustdoc comments from .proto file comments

* move imports to top of file
2019-09-25 20:51:12 -04:00