From: Lizzy Fleckenstein Date: Thu, 22 Dec 2022 22:26:09 +0000 (+0100) Subject: fix X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=98b4178e7bbdc256cf270763a59d3dc7c8d3f957;p=mt_rudp.git fix --- diff --git a/src/client.rs b/src/client.rs index e506a3e..e486488 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,14 +1,5 @@ -use crate::{PeerID, UdpReceiver, UdpSender}; -use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use num_enum::{TryFromPrimitive, TryFromPrimitiveError}; -use std::{ - cell::Cell, - fmt, - io::{self, Write}, - net, ops, - sync::{mpsc, Arc}, - thread, -}; +use crate::*; +use std::{io, net, sync::Arc}; pub struct Sender { sock: Arc, diff --git a/src/main.rs b/src/main.rs index da53573..2a5ff2f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,9 +4,9 @@ mod client; pub mod error; mod recv_worker; -use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; +use byteorder::{BigEndian, WriteBytesExt}; pub use client::{connect, Sender as Client}; -use num_enum::{TryFromPrimitive, TryFromPrimitiveError}; +use num_enum::TryFromPrimitive; use std::{ io::{self, Write}, ops, @@ -20,8 +20,6 @@ pub const NUM_CHANS: usize = 3; pub const REL_BUFFER: usize = 0x8000; pub const INIT_SEQNUM: u16 = 65500; -pub type Error = error::Error; - pub trait UdpSender: Send + Sync + 'static { fn send(&self, data: Vec) -> io::Result<()>; } @@ -62,6 +60,7 @@ pub struct Pkt { data: T, } +pub type Error = error::Error; pub type InPkt = Result>, Error>; #[derive(Debug)] @@ -87,15 +86,6 @@ pub struct RudpSender { } impl RudpShare { - pub fn new(id: u16, remote_id: u16, udp_tx: S) -> Self { - Self { - id, - remote_id, - udp_tx, - chans: (0..NUM_CHANS).map(|_| AckChan).collect(), - } - } - pub fn send(&self, tp: PktType, pkt: Pkt<&[u8]>) -> io::Result<()> { let mut buf = Vec::with_capacity(4 + 2 + 1 + 1 + pkt.data.len()); buf.write_u32::(PROTO_ID)?; @@ -132,10 +122,15 @@ pub fn new( ) -> (RudpSender, RudpReceiver) { let (pkt_tx, pkt_rx) = mpsc::channel(); - let share = Arc::new(RudpShare::new(id, remote_id, udp_tx)); + let share = Arc::new(RudpShare { + id, + remote_id, + udp_tx, + chans: (0..NUM_CHANS).map(|_| AckChan).collect(), + }); let recv_share = Arc::clone(&share); - thread::spawn(move || { + thread::spawn(|| { recv_worker::RecvWorker::new(udp_rx, recv_share, pkt_tx).run(); }); diff --git a/src/recv_worker.rs b/src/recv_worker.rs index d1ae5b1..578cf2e 100644 --- a/src/recv_worker.rs +++ b/src/recv_worker.rs @@ -1,6 +1,5 @@ -use crate::{error::Error, CtlType, InPkt, Pkt, PktType, RudpShare, UdpReceiver, UdpSender}; -use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use num_enum::{TryFromPrimitive, TryFromPrimitiveError}; +use crate::{error::Error, *}; +use byteorder::{BigEndian, ReadBytesExt}; use std::{ cell::Cell, io, result, @@ -8,7 +7,7 @@ use std::{ }; fn to_seqnum(seqnum: u16) -> usize { - (seqnum as usize) & (crate::REL_BUFFER - 1) + (seqnum as usize) & (REL_BUFFER - 1) } struct RelChan { @@ -36,11 +35,11 @@ impl RecvWorker { } pub fn run(&self) { - let mut recv_chans = (0..crate::NUM_CHANS as u8) + let mut recv_chans = (0..NUM_CHANS as u8) .map(|num| RelChan { num, - packets: (0..crate::REL_BUFFER).map(|_| Cell::new(None)).collect(), - seqnum: crate::INIT_SEQNUM, + packets: (0..REL_BUFFER).map(|_| Cell::new(None)).collect(), + seqnum: INIT_SEQNUM, }) .collect(); @@ -70,7 +69,7 @@ impl RecvWorker { let mut cursor = io::Cursor::new(self.udp_rx.recv()?); let proto_id = cursor.read_u32::()?; - if proto_id != crate::PROTO_ID { + if proto_id != PROTO_ID { do yeet InvalidProtoId(proto_id); }