Add trace logging to tower-reconnect (#31)

This commit is contained in:
Oliver Gould 2017-12-02 12:09:05 -08:00 committed by Carl Lerche
parent da7a6a155c
commit 1125d1cbee
2 changed files with 15 additions and 0 deletions

View File

@ -5,5 +5,6 @@ authors = ["Carl Lerche <me@carllerche.com>"]
publish = false
[dependencies]
log = "0.3"
futures = "0.1"
tower = { version = "0.1", path = "../" }

View File

@ -1,4 +1,6 @@
extern crate futures;
#[macro_use]
extern crate log;
extern crate tower;
use futures::{Future, Async, Poll};
@ -65,19 +67,23 @@ where T: NewService
loop {
match self.state {
Idle => {
trace!("poll_ready; idle");
let fut = self.new_service.new_service();
self.state = Connecting(fut);
continue;
}
Connecting(ref mut f) => {
trace!("poll_ready; connecting");
match f.poll() {
Ok(Async::Ready(service)) => {
state = Connected(service);
}
Ok(Async::NotReady) => {
trace!("poll_ready; not ready");
return Ok(Async::NotReady);
}
Err(e) => {
trace!("poll_ready; error");
state = Idle;
ret = Err(Error::Connect(e));
break;
@ -85,14 +91,18 @@ where T: NewService
}
}
Connected(ref mut inner) => {
trace!("poll_ready; connected");
match inner.poll_ready() {
Ok(Async::Ready(_)) => {
trace!("poll_ready; ready");
return Ok(Async::Ready(()));
}
Ok(Async::NotReady) => {
trace!("poll_ready; not ready");
return Ok(Async::NotReady);
}
Err(_) => {
trace!("poll_ready; error");
state = Idle;
}
}
@ -109,6 +119,8 @@ where T: NewService
fn call(&mut self, request: Self::Request) -> Self::Future {
use self::State::*;
trace!("call");
let service = match self.state {
Connected(ref mut service) => service,
_ => return ResponseFuture { inner: None },
@ -139,6 +151,8 @@ impl<T: NewService> Future for ResponseFuture<T> {
type Error = Error<T::Error, T::InitError>;
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
trace!("poll response");
match self.inner {
Some(ref mut f) => {
f.poll().map_err(Error::Inner)