mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-13 01:51:23 +00:00
Have Transport::Listener
s produce ListenerEvent
s. (#1032)
Replace the listener and address pair returned from `Transport::listen_on` with just a listener that produces `ListenerEvent` values which include upgrades as well as address changes.
This commit is contained in:
@ -18,7 +18,7 @@
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
use crate::{muxing::StreamMuxer, Multiaddr, ProtocolName};
|
||||
use crate::{muxing::StreamMuxer, ProtocolName, transport::ListenerEvent};
|
||||
use futures::prelude::*;
|
||||
use std::{fmt, io::{Error as IoError, Read, Write}};
|
||||
use tokio_io::{AsyncRead, AsyncWrite};
|
||||
@ -282,20 +282,20 @@ pub enum EitherListenStream<A, B> {
|
||||
|
||||
impl<AStream, BStream, AInner, BInner> Stream for EitherListenStream<AStream, BStream>
|
||||
where
|
||||
AStream: Stream<Item = (AInner, Multiaddr)>,
|
||||
BStream: Stream<Item = (BInner, Multiaddr)>,
|
||||
AStream: Stream<Item = ListenerEvent<AInner>>,
|
||||
BStream: Stream<Item = ListenerEvent<BInner>>,
|
||||
{
|
||||
type Item = (EitherFuture<AInner, BInner>, Multiaddr);
|
||||
type Item = ListenerEvent<EitherFuture<AInner, BInner>>;
|
||||
type Error = EitherError<AStream::Error, BStream::Error>;
|
||||
|
||||
#[inline]
|
||||
fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> {
|
||||
match self {
|
||||
EitherListenStream::First(a) => a.poll()
|
||||
.map(|i| (i.map(|v| (v.map(|(o, addr)| (EitherFuture::First(o), addr))))))
|
||||
.map(|i| (i.map(|v| (v.map(|e| e.map(EitherFuture::First))))))
|
||||
.map_err(EitherError::A),
|
||||
EitherListenStream::Second(a) => a.poll()
|
||||
.map(|i| (i.map(|v| (v.map(|(o, addr)| (EitherFuture::Second(o), addr))))))
|
||||
.map(|i| (i.map(|v| (v.map(|e| e.map(EitherFuture::Second))))))
|
||||
.map_err(EitherError::B),
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user