diff options
Diffstat (limited to 'src/server/peer.rs')
| -rw-r--r-- | src/server/peer.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/server/peer.rs b/src/server/peer.rs new file mode 100644 index 0000000..e92a3db --- /dev/null +++ b/src/server/peer.rs @@ -0,0 +1,26 @@ +use tokio_util::codec::{Framed, BytesCodec}; +use tokio::net::TcpStream; +use crate::server::Rx; +use std::sync::Arc; +use tokio::sync::Mutex; +use crate::server::shared::Shared; +use tokio::sync::mpsc; + +pub struct Peer { + pub bytes: Framed<TcpStream, BytesCodec>, + // pub(crate) rx: Rx, + pub rx: Rx, +} +impl Peer { + pub async fn new( + state: Arc<Mutex<Shared>>, + bytes: Framed<TcpStream, BytesCodec>, + username: String, + ) -> std::io::Result<Peer> { + // let address = bytes.get_ref().peer_addr()?; + let (tx, rx) = mpsc::unbounded_channel(); + // state.lock().await.peers.insert(address, tx); + state.lock().await.peers.insert(username, tx); + Ok(Peer { bytes, rx }) + } +} |