Go to file
Lucio Franco 9f422d29b1
Update the license for 2019 and tower contributors (#148)
2019-01-15 17:29:08 -05:00
examples Extract `Service` trait and related into crate. (#67) 2018-04-25 12:35:52 -07:00
tower-balance balance: Update `rand` dependency (#142) 2019-01-11 10:12:24 -08:00
tower-buffer tower-buffer: return spawn error instead of panic (#139) 2018-12-20 08:31:08 -08:00
tower-direct-service Add the DirectService trait (#118) 2018-11-19 09:30:45 -08:00
tower-discover tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-filter tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-in-flight-limit tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-mock tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-rate-limit Update tower-rate-limit to work with new tokio_timer (#100) 2019-01-12 12:08:31 -08:00
tower-reconnect tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-retry Document tower-retry (#147) 2019-01-15 10:48:47 -08:00
tower-router tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-service Update link to Service trait docs in tower-service README (#146) 2019-01-14 10:08:43 -08:00
tower-timeout Use `tokio::timer` instead of `tokio_timer`; use Kind pattern (#141) 2019-01-15 15:05:14 -05:00
tower-util tower-service v0.2.0 (#135) 2018-12-12 16:14:05 -05:00
tower-watch tower-watch: Add Error impls for tower_watch::Error (#90) 2018-12-13 15:02:27 -08:00
.gitignore Initial commit 2016-08-26 16:26:03 -07:00
.travis.yml Change Travis test script to `cargo test --all` (#59) 2018-02-28 11:06:17 -08:00
Cargo.toml Add the DirectService trait (#118) 2018-11-19 09:30:45 -08:00
LICENSE Update the license for 2019 and tower contributors (#148) 2019-01-15 17:29:08 -05:00
README.md Various small typos in README (#140) 2018-12-19 21:03:29 -08:00

README.md

Tower

Tower is a library of modular and reusable components for building robust networking clients and servers.

Build Status Gitter

Overview

Tower aims to make it as easy as possible to build robust networking clients and servers. It is protocol agnostic, but is designed around a request / response pattern. If your protocol is entirely stream based, Tower may not be a good fit.

Project Layout

Tower consists of a number of components, each of which live in their own sub crates.

  • tower-service: The foundational traits upon which Tower is built (docs)

  • tower-balance: A load balancer. Load is balanced across a number of services (docs.

  • tower-buffer: A buffering middleware. If the inner service is not ready to handle the next request, tower-buffer stores the request in an internal queue (docs).

  • tower-discover: Service discovery abstraction (docs).

  • tower-filter: Middleware that conditionally dispatch requests to the inner service based on a predicate (docs);

  • tower-in-flight-limit: Middleware limiting the number of requests that are in-flight for the inner service (docs).

  • tower-mock: Testing utility for mocking a Service. This is useful for testing middleware implementations (docs);

  • tower-rate-limit: Middleware limiting the number of requests to the inner service over a period of time (docs).

  • tower-reconnect: Middleware that automatically reconnects the inner service when it becomes degraded (docs).

  • tower-router: Routes requests to one of many inner services based on the request (docs).

  • tower-timeout: Middleware that applies a timeout to requests (docs).

  • tower-util: Miscellaneous additional utilities for Tower (docs).

  • tower-watch: A middleware that rebinds the inner service each time a watch is notified (docs).

Status

Currently, only tower-service, the foundational trait, has been released to crates.io. The rest of the library will be following shortly.

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tower by you, shall be licensed as MIT, without any additional terms or conditions.