add poll_ready to MakeConnection (#202)
This commit is contained in:
parent
728f9d3c37
commit
1aba91313c
|
@ -1,5 +1,5 @@
|
|||
use crate::sealed::Sealed;
|
||||
use futures::Future;
|
||||
use futures::{Future, Poll};
|
||||
use tokio_io::{AsyncRead, AsyncWrite};
|
||||
use tower_service::Service;
|
||||
|
||||
|
@ -10,13 +10,16 @@ use tower_service::Service;
|
|||
/// based connection or using some other method to authenticate the connection.
|
||||
pub trait MakeConnection<Request>: Sealed<(Request,)> {
|
||||
/// The transport provided by this service
|
||||
type Response: AsyncRead + AsyncWrite;
|
||||
type Connection: AsyncRead + AsyncWrite;
|
||||
|
||||
/// Errors produced by the connecting service
|
||||
type Error;
|
||||
|
||||
/// The future that eventually produces the transport
|
||||
type Future: Future<Item = Self::Response, Error = Self::Error>;
|
||||
type Future: Future<Item = Self::Connection, Error = Self::Error>;
|
||||
|
||||
/// Returns `Ready` when it is able to make more connections.
|
||||
fn poll_ready(&mut self) -> Poll<(), Self::Error>;
|
||||
|
||||
/// Connect and return a transport asynchronously
|
||||
fn make_connection(&mut self, target: Request) -> Self::Future;
|
||||
|
@ -29,10 +32,14 @@ where
|
|||
C: Service<Request>,
|
||||
C::Response: AsyncRead + AsyncWrite,
|
||||
{
|
||||
type Response = C::Response;
|
||||
type Connection = C::Response;
|
||||
type Error = C::Error;
|
||||
type Future = C::Future;
|
||||
|
||||
fn poll_ready(&mut self) -> Poll<(), Self::Error> {
|
||||
Service::poll_ready(self)
|
||||
}
|
||||
|
||||
fn make_connection(&mut self, target: Request) -> Self::Future {
|
||||
Service::call(self, target)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue