aboutsummaryrefslogtreecommitdiff
path: root/src/server/peer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/peer.rs')
-rw-r--r--src/server/peer.rs26
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 })
+ }
+}