Commit Graph

22 Commits

Author SHA1 Message Date
Tim Kuehn
6f419e9a9a Refactor server module to be easier to understand.
1. Renames

Some of the items in this module were renamed to be less generic:

- Handler => Incoming
- ClientHandler => Requests
- ResponseHandler => InFlightRequest
- Channel::{respond_with => requests}

In the case of Handler: handler of *what*? Now it's a bit clearer that
this is a stream of Channels (aka *incoming* connections).

Similarly, ClientHandler was a stream of requests over a single
connection. Hopefully Requests better reflects that.

ResponseHandler was renamed InFlightRequest because it no longer
contains the serving function. Instead, it is just the request, plus
the response channel and an abort hook. As a result of this,
Channel::respond_with underwent a big change: it used to take the
serving function and return a ClientHandler; now it has been renamed
Channel::requests and does not take any args.

2. Execute methods

All methods thats actually result in responses being generated
have been consolidated into methods named `execute`:

- InFlightRequest::execute returns a future that completes when a
  response has been generated and sent to the server Channel.
- Requests::execute automatically spawns response handlers for all
  requests over a single channel.
- Channel::execute is a convenience for `channel.requests().execute()`.
- Incoming::execute automatically spawns response handlers for all
  requests over all channels.

3. Removal of Server.

server::Server was removed, as it provided no value over the Incoming/Channel
abstractions. Additionally, server::new was removed, since it just
returned a Server.
2021-03-06 20:20:48 -08:00
Tim Kuehn
3207affb4a Update pre-commit for changes to cargo fmt.
--write-mode is now --check.
2020-08-19 17:51:20 -07:00
Tyler Bindon
959bb691cd Update regex to match diffs output by cargo fmt. (#208)
It appears the header of the diffs output by cargo fmt have changed. It now says "Diff in /blah/blah/blah.rs at line 99:" Matching on lines starting with + or - should be more future-proof against changes to the surroundings.
2018-12-09 01:59:35 -08:00
Tim
5e3cf3c807 Run the new nightly cargo fmt (#156) 2017-07-18 14:54:46 -07:00
Tim
7aabfb3c14 Rewrite using tokio (#44)
* Rewrite tarpc on top of tokio.

* Add examples

* Move error types to their own module.

Also, cull unused error variants.

* Remove unused fn

* Remove CanonicalRpcError* types. They're 100% useless.

* Track tokio master (WIP)

* The great error revamp.

Removed the canonical rpc error type. Instead, the user declares
the error type for each rpc:

In the above example, the error type is Baz. Declaring an error is
optional; if none is specified, it defaults to Never, a convenience
struct that wraps the never type (exclamation mark) to impl Serialize, Deserialize,
Error, etc. Also adds the convenience type StringError for easily
using a String as an error type.

* Add missing license header

* Minor cleanup

* Rename StringError => Message

* Create a sync::Connect trait.

Along with this, the existing Connect trait moves to future::Connect. The future
and sync modules are reexported from the crate root.

Additionally, the utility errors Never and Message are no longer reexported from
the crate root.

* Update readme

* Track tokio/futures master. Add a Spawn utility trait to replace the removed forget.

* Fix pre-push hook

* Add doc comment to SyncServiceExt.

* Fix up some documentation

* Track tokio-proto master

* Don't set tcp nodelay

* Make future::Connect take an associated type for the future.

* Unbox FutureClient::connect return type

* Use type alias instead of newtype struct for ClientFuture

* Fix benches/latency.rs

* Write a plugin to convert lower_snake_case idents/types to UpperCamelCase.

Use it to add associated types to FutureService instead of boxing the return futures.

* Specify plugin = true in snake_to_camel/Cargo.toml. Weird things happen otherwise.

* Add clippy.toml
2016-09-04 16:09:50 -07:00
Tim Kuehn
e8fcf0e4de Fix issue with grep exit status 2016-02-27 02:30:39 -08:00
Tim Kuehn
a8766a9200 Use rustfmt --write-mode=diff in lieu of hashes 2016-02-25 00:50:46 -08:00
Tim Kuehn
ef96c87226 Skip children when rustfmting in pre-commit 2016-02-25 00:50:37 -08:00
Tim Kuehn
3543b34f2b Fix formatting check.
* shasum suffixes the checksum with '- filename' so pipe in the text instead.
* rustfmt prefixes the formatting with 'Using rustfmt config file filename' so pipe in the text instead.
2016-02-25 00:50:29 -08:00
Adam Wright
06a2cab31c Move /bin/bash to the top so it works 2016-02-19 23:08:50 -08:00
Adam Wright
a06b583334 Also check existence of shasum 2016-02-18 01:27:07 -08:00
Adam Wright
3462451256 Check for multirust, rustfmt, clean up some things 2016-02-18 01:06:31 -08:00
Adam Wright
17d800b8a8 Update comments 2016-02-18 01:06:31 -08:00
Adam Wright
f2328d200e pre-commit doesn't modify files, just checks foramtting 2016-02-18 01:06:31 -08:00
Adam Wright
07c052a1c1 Individually format crates, use -q 2016-02-15 18:54:15 -08:00
Adam Wright
34cf0c8172 Updated hook to print messages like prepush 2016-02-15 18:30:26 -08:00
Adam Wright
e2756edd72 Test all crates and format on pre-commit 2016-02-15 13:58:04 -08:00
Tim Kuehn
a58dea0ec5 Update license from dual Apache 2.0/MIT to just MIT. 2016-02-08 11:52:51 -08:00
Tim Kuehn
9bd7fc6711 Add missing license headers 2016-01-21 11:27:37 -08:00
Adam Wright
6e37d3a37e Fix pre-push/commit hooks so they work.
- Move them back to the root directory of the repo
- Explicitly specify the path to the manifest we are running tests for
2016-01-12 23:35:53 -08:00
Tim Kuehn
6141b295d1 Add a tarpc_examples package 2016-01-11 23:39:58 -08:00
Adam Wright
3ea0f6fbb5 WIP 2016-01-10 17:49:18 -08:00