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:
Carl Lerche 2018-04-25 12:35:52 -07:00 committed by GitHub
parent 11b591b6e0
commit 5369879af6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 82 additions and 94 deletions

View File

@ -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"

View File

@ -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;
```

View File

@ -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};

View File

@ -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"

View File

@ -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);

View File

@ -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;

View File

@ -1,6 +1,6 @@
use futures::{Async, Poll};
use tower::Service;
use tower_discover::{Change, Discover};
use tower_service::Service;
use Load;

View File

@ -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;

View File

@ -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" }

View File

@ -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;

View File

@ -6,4 +6,4 @@ publish = false
[dependencies]
futures = "0.1"
tower = { version = "0.1", path = "../" }
tower-service = { version = "0.1", path = "../tower-service" }

View File

@ -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};

View File

@ -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" }

View File

@ -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;

View File

@ -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;

View File

@ -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]

View File

@ -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;

View File

@ -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]

View File

@ -6,4 +6,4 @@ publish = false
[dependencies]
futures = "0.1"
tower = { version = "0.1", path = "../" }
tower-service = { version = "0.1", path = "../tower-service" }

View File

@ -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};

View File

@ -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() {

View File

@ -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]

View File

@ -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};

View File

@ -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;

View File

@ -6,4 +6,4 @@ publish = false
[dependencies]
futures = "0.1"
tower = { version = "0.1", path = "../" }
tower-service = { version = "0.1", path = "../tower-service" }

View File

@ -1,3 +1,3 @@
extern crate tower;
extern crate tower_service;
pub use tower::ReadyService;
pub use tower_service::ReadyService;

View File

@ -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" }

View File

@ -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};

View File

@ -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]

View File

@ -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};

View File

@ -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
View 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
View File

@ -0,0 +1,3 @@
# Tower Service
The foundational `Service` trait that Tower is based on.

View File

@ -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;
///

View File

@ -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"

View File

@ -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};

View File

@ -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" }

View File

@ -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;

View File

@ -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.
///

View File

@ -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;

View File

@ -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.
///

View File

@ -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;