mirror of
https://github.com/tower-rs/tower.git
synced 2025-09-30 22:41:17 +00:00
Extract Service
trait and related into crate. (#67)
This makes the `tower` crate available to be a "batteries included" facade.
This commit is contained in:
parent
11b591b6e0
commit
5369879af6
23
Cargo.toml
23
Cargo.toml
@ -1,24 +1,6 @@
|
||||
[package]
|
||||
|
||||
name = "tower"
|
||||
version = "0.1.0"
|
||||
license = "MIT"
|
||||
authors = ["Carl Lerche <me@carllerche.com>"]
|
||||
description = """
|
||||
An extensible request / response system, used to construct high-concurrency
|
||||
servers and clients.
|
||||
"""
|
||||
|
||||
documentation = "https://docs.rs/tower"
|
||||
homepage = "https://github.com/tower-rs/tower"
|
||||
repository = "https://github.com/tower-rs/tower"
|
||||
readme = "README.md"
|
||||
publish = false
|
||||
|
||||
[workspace]
|
||||
|
||||
members = [
|
||||
"./",
|
||||
"tower-balance",
|
||||
"tower-buffer",
|
||||
"tower-discover",
|
||||
@ -29,14 +11,13 @@ members = [
|
||||
"tower-ready-service",
|
||||
"tower-reconnect",
|
||||
"tower-router",
|
||||
"tower-service",
|
||||
"tower-timeout",
|
||||
"tower-util",
|
||||
]
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
|
||||
[dev-dependencies]
|
||||
futures = "0.1"
|
||||
log = "0.4.1"
|
||||
env_logger = { version = "0.5.3", default-features = false }
|
||||
tokio-timer = "0.1"
|
||||
|
15
README.md
15
README.md
@ -9,18 +9,3 @@ This is not ready for usage yet (unless you are brave).
|
||||
More information about this crate can be found in the [crate documentation][dox]
|
||||
|
||||
[dox]: https://tower-rs.github.io/tower/tower
|
||||
|
||||
## Usage
|
||||
|
||||
First, add this to your `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
tower = { git = "https://github.com/tower-rs/tower" }
|
||||
```
|
||||
|
||||
Next, add this to your crate:
|
||||
|
||||
```rust
|
||||
extern crate tower;
|
||||
```
|
||||
|
@ -12,14 +12,14 @@
|
||||
extern crate futures;
|
||||
extern crate tokio_timer;
|
||||
extern crate futures_cpupool;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
|
||||
extern crate env_logger;
|
||||
|
||||
use tower::{Service, NewService};
|
||||
use tower_service::{Service, NewService};
|
||||
|
||||
use futures::{Future, Stream, IntoFuture, Poll, Async};
|
||||
use futures::future::{Executor, FutureResult};
|
||||
|
@ -8,7 +8,7 @@ publish = false
|
||||
futures = "0.1"
|
||||
log = "0.4.1"
|
||||
rand = "0.4"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
tower-discover = { version = "0.1", path = "../tower-discover" }
|
||||
indexmap = "1"
|
||||
|
||||
|
@ -9,9 +9,9 @@ extern crate log;
|
||||
extern crate rand;
|
||||
extern crate tokio_core;
|
||||
extern crate tokio_timer;
|
||||
extern crate tower;
|
||||
extern crate tower_balance;
|
||||
extern crate tower_discover;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::{Async, Future, Stream, Poll, future, stream};
|
||||
use hdrsample::Histogram;
|
||||
@ -19,9 +19,9 @@ use std::collections::VecDeque;
|
||||
use std::time::{Duration, Instant};
|
||||
use tokio_core::reactor::Core;
|
||||
use tokio_timer::{Timer, TimerError, Sleep};
|
||||
use tower::Service;
|
||||
use tower_balance::*;
|
||||
use tower_discover::{Change, Discover};
|
||||
use tower_service::Service;
|
||||
|
||||
struct DelayService(Timer, Duration);
|
||||
|
||||
|
@ -6,16 +6,16 @@ extern crate indexmap;
|
||||
#[cfg(test)]
|
||||
extern crate quickcheck;
|
||||
extern crate rand;
|
||||
extern crate tower;
|
||||
extern crate tower_discover;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::{Future, Poll, Async};
|
||||
use indexmap::IndexMap;
|
||||
use rand::Rng;
|
||||
use std::{fmt, error};
|
||||
use std::marker::PhantomData;
|
||||
use tower::Service;
|
||||
use tower_discover::Discover;
|
||||
use tower_service::Service;
|
||||
|
||||
pub mod choose;
|
||||
pub mod load;
|
||||
|
@ -1,6 +1,6 @@
|
||||
use futures::{Async, Poll};
|
||||
use tower::Service;
|
||||
use tower_discover::{Change, Discover};
|
||||
use tower_service::Service;
|
||||
|
||||
use Load;
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
use futures::{Future, Poll, Async};
|
||||
use std::sync::Arc;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
use tower::Service;
|
||||
use tower_discover::{Change, Discover};
|
||||
use tower_service::Service;
|
||||
|
||||
use Load;
|
||||
|
||||
|
@ -6,7 +6,7 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
|
||||
[dev-dependencies]
|
||||
tower-mock = { version = "0.1", path = "../tower-mock" }
|
||||
|
@ -10,13 +10,13 @@
|
||||
//! and capabilities around adding buffering to an arbitrary `Service`.
|
||||
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::{Future, Stream, Poll, Async};
|
||||
use futures::future::Executor;
|
||||
use futures::sync::oneshot;
|
||||
use futures::sync::mpsc::{self, UnboundedSender, UnboundedReceiver};
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use std::{error, fmt};
|
||||
use std::sync::Arc;
|
||||
|
@ -6,4 +6,4 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
|
@ -6,10 +6,10 @@
|
||||
//! other processes or even in process.
|
||||
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::{Poll, Async};
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use std::hash::Hash;
|
||||
use std::iter::{Enumerate, IntoIterator};
|
||||
|
@ -6,7 +6,7 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
|
||||
[dev-dependencies]
|
||||
tower-mock = { version = "0.1", path = "../tower-mock" }
|
||||
|
@ -2,11 +2,11 @@
|
||||
//! a predicate.
|
||||
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::{Future, IntoFuture, Poll, Async};
|
||||
use futures::task::AtomicTask;
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use std::{fmt, mem};
|
||||
use std::sync::Arc;
|
||||
|
@ -1,11 +1,11 @@
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_mock;
|
||||
extern crate tower_filter;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::*;
|
||||
use tower::*;
|
||||
use tower_filter::*;
|
||||
use tower_service::*;
|
||||
|
||||
use std::thread;
|
||||
use std::sync::mpsc;
|
||||
|
@ -6,7 +6,7 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
tower-ready-service = { version = "0.1", path = "../tower-ready-service" }
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -2,11 +2,11 @@
|
||||
//! service.
|
||||
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_ready_service;
|
||||
extern crate tower_service;
|
||||
|
||||
use tower::Service;
|
||||
use tower_ready_service::ReadyService;
|
||||
use tower_service::Service;
|
||||
|
||||
use futures::{Future, Poll, Async};
|
||||
use futures::task::AtomicTask;
|
||||
|
@ -1,10 +1,11 @@
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_mock;
|
||||
extern crate tower_in_flight_limit;
|
||||
extern crate tower_service;
|
||||
|
||||
use tower_in_flight_limit::InFlightLimit;
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use futures::future::{Future, poll_fn};
|
||||
|
||||
#[test]
|
||||
|
@ -6,4 +6,4 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
|
@ -1,9 +1,9 @@
|
||||
//! Mock `Service` that can be used in tests.
|
||||
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
extern crate futures;
|
||||
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use futures::{Future, Stream, Poll, Async};
|
||||
use futures::sync::{oneshot, mpsc};
|
||||
|
@ -1,9 +1,10 @@
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_mock;
|
||||
extern crate tower_service;
|
||||
|
||||
use tower_service::Service;
|
||||
|
||||
use futures::Future;
|
||||
use tower::Service;
|
||||
|
||||
#[test]
|
||||
fn single_request_ready() {
|
||||
|
@ -6,7 +6,7 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
tokio-timer = "0.1"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -5,11 +5,11 @@
|
||||
|
||||
#[macro_use]
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
extern crate tokio_timer;
|
||||
|
||||
use futures::{Future, Poll};
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
use tokio_timer::{Timer, Sleep};
|
||||
|
||||
use std::{error, fmt};
|
||||
|
@ -1,12 +1,12 @@
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_mock;
|
||||
extern crate tower_rate_limit;
|
||||
extern crate tower_service;
|
||||
extern crate tokio_timer;
|
||||
|
||||
use futures::prelude::*;
|
||||
use tower::*;
|
||||
use tower_rate_limit::*;
|
||||
use tower_service::*;
|
||||
|
||||
use std::time::Duration;
|
||||
use std::thread;
|
||||
|
@ -6,4 +6,4 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
|
@ -1,3 +1,3 @@
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
pub use tower::ReadyService;
|
||||
pub use tower_service::ReadyService;
|
||||
|
@ -7,4 +7,4 @@ publish = false
|
||||
[dependencies]
|
||||
log = "0.4.1"
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
|
@ -1,10 +1,10 @@
|
||||
extern crate futures;
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
use futures::{Future, Async, Poll};
|
||||
use tower::{Service, NewService};
|
||||
use tower_service::{Service, NewService};
|
||||
|
||||
use std::{error, fmt};
|
||||
|
||||
|
@ -6,7 +6,7 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
futures-borrow = { git = "https://github.com/carllerche/better-future" }
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -1,12 +1,12 @@
|
||||
//! Routes requests to one of many inner inner services based on the request.
|
||||
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
|
||||
#[macro_use]
|
||||
extern crate futures;
|
||||
extern crate futures_borrow;
|
||||
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use futures::{Future, Poll};
|
||||
use futures_borrow::{Borrow, BorrowGuard};
|
||||
|
@ -1,10 +1,10 @@
|
||||
extern crate futures;
|
||||
extern crate futures_test;
|
||||
extern crate tower;
|
||||
extern crate tower_router;
|
||||
extern crate tower_service;
|
||||
|
||||
use tower::Service;
|
||||
use tower_router::*;
|
||||
use tower_service::Service;
|
||||
|
||||
use futures::*;
|
||||
use futures::future::FutureResult;
|
||||
|
17
tower-service/Cargo.toml
Normal file
17
tower-service/Cargo.toml
Normal file
@ -0,0 +1,17 @@
|
||||
[package]
|
||||
|
||||
name = "tower-service"
|
||||
version = "0.1.0"
|
||||
license = "MIT"
|
||||
authors = ["Carl Lerche <me@carllerche.com>"]
|
||||
description = """
|
||||
The core `Service` trait for Tower.
|
||||
"""
|
||||
documentation = "https://docs.rs/tower-service"
|
||||
homepage = "https://github.com/tower-rs/tower"
|
||||
repository = "https://github.com/tower-rs/tower"
|
||||
readme = "README.md"
|
||||
publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
3
tower-service/README.md
Normal file
3
tower-service/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Tower Service
|
||||
|
||||
The foundational `Service` trait that Tower is based on.
|
@ -89,7 +89,7 @@ use std::sync::Arc;
|
||||
/// For example, take timeouts as an example:
|
||||
///
|
||||
/// ```rust,ignore
|
||||
/// use tower::Service;
|
||||
/// use tower_service::Service;
|
||||
/// use futures::Future;
|
||||
/// use std::time::Duration;
|
||||
///
|
@ -6,5 +6,5 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = "../" }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
tokio-timer = "0.1"
|
||||
|
@ -4,11 +4,11 @@
|
||||
//! will be aborted.
|
||||
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_service;
|
||||
extern crate tokio_timer;
|
||||
|
||||
use futures::{Future, Poll, Async};
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
use tokio_timer::{Timer, Sleep};
|
||||
|
||||
use std::{error, fmt};
|
||||
|
@ -6,5 +6,5 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
futures = "0.1"
|
||||
tower = { version = "0.1", path = ".." }
|
||||
tower-service = { version = "0.1", path = "../tower-service" }
|
||||
tower-ready-service = { version = "0.1", path = "../tower-ready-service" }
|
||||
|
@ -15,11 +15,11 @@
|
||||
//!
|
||||
//! ```
|
||||
//! # extern crate futures;
|
||||
//! # extern crate tower;
|
||||
//! # extern crate tower_service;
|
||||
//! # extern crate tower_util;
|
||||
//! # use futures::*;
|
||||
//! # use futures::future::FutureResult;
|
||||
//! # use tower::*;
|
||||
//! # use tower_service::*;
|
||||
//! # use tower_util::*;
|
||||
//! // Respond to requests using a closure. Since closures cannot be named,
|
||||
//! // `ServiceFn` cannot be named either
|
||||
@ -57,7 +57,7 @@
|
||||
//! ```
|
||||
|
||||
use futures::{Future, Poll};
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
use std::fmt;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
use futures::Poll;
|
||||
use futures::future::Either;
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
/// Combine two different service types into a single type.
|
||||
///
|
||||
|
@ -1,8 +1,8 @@
|
||||
//! Various utility types and functions that are generally with Tower.
|
||||
|
||||
extern crate futures;
|
||||
extern crate tower;
|
||||
extern crate tower_ready_service;
|
||||
extern crate tower_service;
|
||||
|
||||
pub mod either;
|
||||
pub mod option;
|
||||
|
@ -3,7 +3,7 @@
|
||||
//! See `OptionService` documentation for more details.
|
||||
//!
|
||||
use futures::{Future, Poll};
|
||||
use tower::Service;
|
||||
use tower_service::Service;
|
||||
|
||||
/// Optionally forwards requests to an inner service.
|
||||
///
|
||||
|
@ -1,6 +1,6 @@
|
||||
use futures::IntoFuture;
|
||||
use tower::{Service, NewService};
|
||||
use tower_ready_service::ReadyService;
|
||||
use tower_service::{Service, NewService};
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user