Commit Graph

771 Commits

Author SHA1 Message Date
Tim
4dfb3a48c3 Derive Deserialize, Serialize in macros. Requires feature(use_extern_macros). (#151) 2017-07-18 12:04:56 -07:00
Tim
21e8883877 Update to serde 1.0 and bincode 0.8 (#149) v0.8.0 2017-05-05 22:16:44 -07:00
Tim Kuehn
7dbfe07c97 Bump to version 0.7.3 and update release notes. v0.7.3 2017-04-26 12:33:58 -07:00
Jon Gjengset
8bc01a993b format with rustfmt 0.8.3 (#148) 2017-04-26 12:25:49 -07:00
Jon Gjengset
e2728d84f3 Remove unnecessary Sync bound on clients (#147) 2017-04-26 12:11:30 -07:00
Adam Wright
85a8f8fce7 Merge pull request #145 from tikue/master
Bump version
v0.7.2
2017-04-22 16:55:29 -07:00
Tim Kuehn
9267daa409 Bump version 2017-04-22 16:28:27 -07:00
Adam Wright
a01ecd3314 Merge pull request #144 from tikue/master
Track rustc master
2017-04-22 16:23:18 -07:00
Tim Kuehn
dd662beb9b Track rustc master 2017-04-22 16:07:31 -07:00
Adam Wright
5857de5164 Merge pull request #142 from google/readme-typo
Fix typo in readme
2017-04-22 16:05:09 -07:00
Tim
8cb6ff89cc Fix typo in readme 2017-04-11 20:30:14 -07:00
Tim
a441fcb771 Bump to 0.7.1 for some doc fixes (#141) v0.7.1 2017-03-31 15:18:35 -07:00
Tim
f0ad99b900 Prepare for Crates.io release (#140)
* Prepare tarpc-plugins for Crates.io release.

* Add a 0.7 bullet to RELEASES.md.

* Fix some outdated doc comments.

* Reexport ShutdownFuture.
v0.7.0
2017-03-31 14:15:20 -07:00
Tim
5add81b5f3 Feature rollup (#129)
* Create a directory for the `future::server` module, which has become quite large. server.rs => server/mod.rs. Server submodules for shutdown and connection logic are added.

* Add fn thread_pool(...) to sync::server::Options

* Configure idle threads to expire after one minute

* Add tarpc::util::lazy for lazily executing functions. Similar to `futures::lazy` but useful in different circumstances. Specifically, `futures::lazy` typically requires a closure, whereas `util::lazy` kind of deconstructs a closure into its function and args.

* Remove some unstable features, and `cfg(plugin)` only in tests. Features `unboxed_closures` and `fn_traits` are removed by replacing manual Fn impls with Stream impls. This actually leads to slightly more performant code, as well, because some `Rc`s could be removed.

* Fix tokio deprecation warnings. Update to use tokio-io in lieu of deprecated tokio-core items. impl AsyncRead's optional `unsafe fn prepare_uninitialized_buffer` for huge perf wins

* Add debug impls to all public items and add `deny(missing_debug_implementations)` to the crate.

* Bump tokio core version.
2017-03-31 12:16:40 -07:00
Tim
15080b2889 Set a default max packet size. (#128)
The default max packet size of 2 << 20
2017-03-23 00:08:08 -07:00
Jon Gjengset
8598d4beaf Fix following removal of parse_ty_path (#138)
The merge of rust-lang/rust#40043 removes parse_ty_path in the latest
nightly, which we depended on. This patch rewrites that code path using
parse_path, and in the process eliminates an unreachable!() if let arm.
2017-03-22 21:20:03 -07:00
Tim
40faf25d99 Fix vulnerability. (#126)
0 is a sentinel value used to make all enums refutable. This is a hack around issues in maros
where you're unknowingly treating irrefutable patterns as refutable, which is unfortunately
a hard error.

The server panics if it ever encountered the 0-variant, which before this patch was possible. Now,
it's not possible, because 0-variants are now not able to be deserialized.
2017-03-22 18:17:37 -07:00
Jon Gjengset
c8be9b690b Fix following removal of Attribute.value (#136)
Since rust-lang/rust#40346 has now been merged, Attribute no longer has
a .value field. Instead, we must follow the token stream and modify the
tokens directly. For Docstring attributes, there should only be one
token, the docstring value.
2017-03-21 11:00:52 -07:00
Malte Schwarzkopf
f4018a431e bincode 1.0.0-alpha6 changed SizeLimit to a trait (#134)
Unfortunately, cargo's semantic versioning gets confused by the
"-alpha" suffix in current bincode versions (I think): even though
tarpc's Cargo.toml specified version "1.0.0-alpha4", cargo will
download the more recent "1.0.0-alpha6", which has breaking changes
to the `SizeLimit` enum.

This change makes tarpc work with bincode 1.0.0-alpha6 and updates the
dependency.
2017-03-19 11:12:17 -07:00
Tim
79aee18d17 Change module structure. (#122)
* Change `client::{future, sync}, server::{future, sync}` to `future::{client, server}, sync::{client, server}`

This reflects the most common usage pattern and allows for some types to not need to be fully qualified when used together (e.g. the previously-named `client::future::Options` and `server::future::Options` can now be `client::Options` and `server::Options`).

* sync::client: create a RequestHandler struct to encapsulate logic of processing client requests.

The largest benefit is that unit testing becomes easier, e.g. testing that the request processing stops when all request senders are dropped.

* Rename Serialize error variants to make sense.

* Rename tarpc_service_ConnectFuture__ => Connect (because it's public)

* Use tokio proto's ClientProxy.

Rather than reimplement the same logic. Curiously, this commit
isn't a net loss in LOC. Oh well.

* Factor out os-specific functionality in listener() into their own fns

* Remove service-fn dep
2017-03-07 18:20:46 -08:00
Tim
f9ff2c4e50 Merge pull request #121 from tikue/send-client
Make SyncClient Send again (and Clone too!).
2017-03-06 22:12:33 -08:00
Tim Kuehn
073bc25e18 Derive debug rather than manually impl 2017-03-06 21:12:44 -08:00
Tim Kuehn
d0d65c413a Make Client Send again (and Clone too!).
The basic strategy is to start a reactor on a dedicated thread running a request stream.
Requests are spawned onto the reactor, allowing multiple requests to be
processed concurrently. For example, if you clone the client to make requests
from multiple threads, they won't have to wait for each others'
requests to complete before theirs start being sent out.

Also, client rpcs only take &self now, which was also required for
clients to be usable in a service.

Also added a test to prevent regressions.
2017-03-06 21:12:44 -08:00
Tim
e59116fb48 Add server::Handle::shutdown (#117)
* Add server::Handle::shutdown
* Hybrid approach: lameduck + total shutdown when all clients disconnect.
* The future handle has addr() and shutdown(), but not run().
2017-03-06 20:57:12 -08:00
Tim
daa96a69a2 Latency benchmark: drive the client with the same reactor as server (so it's entirely single-threaded) (#116) 2017-02-22 21:46:28 -08:00
Tim
85ae614983 Add a test that dropping a client doesn't break the server (#115) 2017-02-22 21:12:52 -08:00
Adam Wright
e17549a1f7 Merge pull request #114 from shaladdle/fix-throughput
Fix throughput example
2017-02-21 22:39:51 -08:00
Adam Wright
0b8a845ec1 Actually run the server future 2017-02-21 22:24:05 -08:00
Tim
2b8f3db1fd Return a concrete type from server::listen (#113)
* Return a concrete type from `server::listen`.
* Change `FutureServiceExt::listen` to return `(SocketAddr, Listen)`, where `Listen` is a struct created by the `service!` macro that `impls Future<Item=(),  Error=()>` and represents server execution.
* Disable `conservative_impl_trait` as it's no longer used.
* Update `FutureServiceExt` doc comment.
* Update `SyncServiceExt` doc comment. Also annotate `server::Handle` with `#[must_use]`.
* `cargo fmt`
2017-02-21 22:01:59 -08:00
Adam Wright
44792347b1 Change sync listen to return a handle which runs the server (#112) 2017-02-21 09:50:01 -08:00
Adam Wright
f7c371930f Merge pull request #110 from shaladdle/prepush
Prepush script improvement/simplification
2017-02-20 18:43:51 -08:00
Adam Wright
3eec8fe1dd Actually fail the prepush in try_run 2017-02-20 18:10:23 -08:00
Adam Wright
9c973eb80b Switch back to verb_ing_ 2017-02-20 18:07:36 -08:00
Adam Wright
37763f25e4 Make whitespace consistent 2017-02-20 17:46:13 -08:00
Adam Wright
515ab90299 Various simplifications/improvements to pre-push 2017-02-20 17:44:30 -08:00
Adam Wright
9987eae290 --color=always has to be after the command 2017-02-20 17:11:05 -08:00
Adam Wright
22545c653c Fix prepush script? 2017-02-20 17:11:05 -08:00
Cyril Plisko
8b9847e347 Update chrono (#111) 2017-02-20 13:05:47 -08:00
Adam Wright
49bc4d0bce Merge pull request #109 from shaladdle/formatting
Run cargo fmt
2017-02-18 22:37:27 -08:00
Adam Wright
0780af9e05 Run cargo fmt 2017-02-18 15:37:31 -08:00
Adam Wright
bc16ffd2d0 Merge pull request #108 from tikue/doc-fix
Fix readme, but for real this time.
2017-02-16 21:08:01 -08:00
Tim Kuehn
c7831e8aa6 More spacing stuff 2017-02-16 20:56:04 -08:00
Tim Kuehn
8faba59d66 Fix tabs in pre-push, and remove dead code in readme 2017-02-16 20:51:57 -08:00
Tim Kuehn
bceaea1206 .travis.yml: Do tls tests, then rustdoc tests, then regular tests 2017-02-16 20:18:46 -08:00
Tim Kuehn
fea8d5eb1d I hate READMEs. 2017-02-16 17:57:17 -08:00
Tim Kuehn
db9c23058d Dumb thing 2017-02-16 17:53:59 -08:00
Tim Kuehn
77638b388d Have travis test README with rustdoc. Yay! 2017-02-16 17:53:06 -08:00
Tim Kuehn
eac6b64aeb Merge branch 'master' of github.com:google/tarpc into doc-fix 2017-02-16 17:52:21 -08:00
Tim Kuehn
7ae107cf2b Fix readme for real this time. 2017-02-16 17:46:55 -08:00
Adam Wright
12efcae80c Merge pull request #107 from tikue/master
Fix README future service examples
2017-02-16 16:22:48 -08:00