refactored

This commit is contained in:
open-trade 2020-03-12 22:06:09 +08:00
parent db89aaa5c6
commit e1e4c9a965

View File

@ -1,6 +1,6 @@
use hbb_common::{ use hbb_common::{
bytes::BytesMut, log, protobuf::parse_from_bytes, rendezvous_proto::*, udp::FramedSocket, tcp::new_listener, allow_err, bytes::BytesMut, log, protobuf::parse_from_bytes, rendezvous_proto::*,
AddrMangle, ResultType, tcp::new_listener, tokio, udp::FramedSocket, AddrMangle, ResultType,
}; };
use std::{collections::HashMap, net::SocketAddr}; use std::{collections::HashMap, net::SocketAddr};
@ -20,19 +20,19 @@ impl RendezvousServer {
let mut rs = Self { let mut rs = Self {
peer_map: PeerMap::new(), peer_map: PeerMap::new(),
}; };
// used to test if udp/tcp share the same NAT port, yes in my test. // tcp listener used to test if udp/tcp share the same NAT port, yes in my test.
// also be used to help client to get local ip. // also be used to help client to get local ip.
let addr = addr.to_string(); let mut listener = new_listener(addr, true).await.unwrap();
hbb_common::tokio::spawn(async { loop {
let mut l = new_listener(addr, true).await.unwrap(); tokio::select! {
while let Ok((_, addr)) = l.accept().await { Some(Ok((bytes, addr))) = socket.next() => {
allow_err!(rs.handle_msg(&bytes, addr, &mut socket).await);
}
Ok((_, addr)) = listener.accept() => {
log::debug!("Tcp connection from {:?}", addr); log::debug!("Tcp connection from {:?}", addr);
} }
});
while let Some(Ok((bytes, addr))) = socket.next().await {
rs.handle_msg(&bytes, addr, &mut socket).await?;
} }
Ok(()) }
} }
pub async fn handle_msg( pub async fn handle_msg(