11use futures:: { Async , Poll , Stream } ;
22use futures:: sync:: { mpsc, oneshot} ;
3+ use want;
34
45use common:: Never ;
5- use super :: signal;
66
77//pub type Callback<T, U> = oneshot::Sender<Result<U, (::Error, Option<T>)>>;
88pub type RetryPromise < T , U > = oneshot:: Receiver < Result < U , ( :: Error , Option < T > ) > > ;
99pub type Promise < T > = oneshot:: Receiver < Result < T , :: Error > > ;
1010
1111pub fn channel < T , U > ( ) -> ( Sender < T , U > , Receiver < T , U > ) {
1212 let ( tx, rx) = mpsc:: channel ( 0 ) ;
13- let ( giver, taker) = signal :: new ( ) ;
13+ let ( giver, taker) = want :: new ( ) ;
1414 let tx = Sender {
1515 giver : giver,
1616 inner : tx,
@@ -27,7 +27,7 @@ pub struct Sender<T, U> {
2727 // when the queue is empty. This helps us know when a request and
2828 // response have been fully processed, and a connection is ready
2929 // for more.
30- giver : signal :: Giver ,
30+ giver : want :: Giver ,
3131 inner : mpsc:: Sender < ( T , Callback < T , U > ) > ,
3232}
3333
@@ -49,18 +49,16 @@ impl<T, U> Sender<T, U> {
4949 self . giver . is_wanting ( )
5050 }
5151
52- pub fn is_closed ( & self ) -> bool {
53- self . giver . is_canceled ( )
54- }
55-
5652 pub fn try_send ( & mut self , val : T ) -> Result < RetryPromise < T , U > , T > {
53+ self . giver . give ( ) ;
5754 let ( tx, rx) = oneshot:: channel ( ) ;
5855 self . inner . try_send ( ( val, Callback :: Retry ( tx) ) )
5956 . map ( move |_| rx)
6057 . map_err ( |e| e. into_inner ( ) . 0 )
6158 }
6259
6360 pub fn send ( & mut self , val : T ) -> Result < Promise < U > , T > {
61+ self . giver . give ( ) ;
6462 let ( tx, rx) = oneshot:: channel ( ) ;
6563 self . inner . try_send ( ( val, Callback :: NoRetry ( tx) ) )
6664 . map ( move |_| rx)
@@ -70,7 +68,7 @@ impl<T, U> Sender<T, U> {
7068
7169pub struct Receiver < T , U > {
7270 inner : mpsc:: Receiver < ( T , Callback < T , U > ) > ,
73- taker : signal :: Taker ,
71+ taker : want :: Taker ,
7472}
7573
7674impl < T , U > Stream for Receiver < T , U > {
0 commit comments