1
0

adding header destructors

This commit is contained in:
EAimTY 2023-01-25 00:12:34 +09:00
parent 46ad3068d2
commit 2c2fc7924b
7 changed files with 68 additions and 15 deletions

View File

@ -31,3 +31,9 @@ impl Command for Authenticate {
8 8
} }
} }
impl From<Authenticate> for ([u8; 8],) {
fn from(auth: Authenticate) -> Self {
(auth.token,)
}
}

View File

@ -31,3 +31,9 @@ impl Command for Connect {
self.addr.len() self.addr.len()
} }
} }
impl From<Connect> for (Address,) {
fn from(connect: Connect) -> Self {
(connect.addr,)
}
}

View File

@ -17,8 +17,8 @@ impl Dissociate {
Self { assoc_id } Self { assoc_id }
} }
pub fn assoc_id(&self) -> u16 { pub fn assoc_id(&self) -> &u16 {
self.assoc_id &self.assoc_id
} }
} }
@ -31,3 +31,9 @@ impl Command for Dissociate {
2 2
} }
} }
impl From<Dissociate> for (u16,) {
fn from(dissoc: Dissociate) -> Self {
(dissoc.assoc_id,)
}
}

View File

@ -25,3 +25,9 @@ impl Command for Heartbeat {
0 0
} }
} }
impl From<Heartbeat> for () {
fn from(hb: Heartbeat) -> Self {
()
}
}

View File

@ -36,24 +36,24 @@ impl Packet {
} }
} }
pub fn assoc_id(&self) -> u16 { pub fn assoc_id(&self) -> &u16 {
self.assoc_id &self.assoc_id
} }
pub fn pkt_id(&self) -> u16 { pub fn pkt_id(&self) -> &u16 {
self.pkt_id &self.pkt_id
} }
pub fn frag_total(&self) -> u8 { pub fn frag_total(&self) -> &u8 {
self.frag_total &self.frag_total
} }
pub fn frag_id(&self) -> u8 { pub fn frag_id(&self) -> &u8 {
self.frag_id &self.frag_id
} }
pub fn size(&self) -> u16 { pub fn size(&self) -> &u16 {
self.size &self.size
} }
pub fn addr(&self) -> &Address { pub fn addr(&self) -> &Address {
@ -74,3 +74,16 @@ impl Command for Packet {
2 + 2 + 1 + 1 + 2 + self.addr.len() 2 + 2 + 1 + 1 + 2 + self.addr.len()
} }
} }
impl From<Packet> for (u16, u16, u8, u8, u16, Address) {
fn from(pkt: Packet) -> Self {
(
pkt.assoc_id,
pkt.pkt_id,
pkt.frag_total,
pkt.frag_id,
pkt.size,
pkt.addr,
)
}
}

View File

@ -17,8 +17,6 @@ struct Tx {
_task_reg: TaskRegister, _task_reg: TaskRegister,
} }
struct Rx;
impl Connect<side::Tx> { impl Connect<side::Tx> {
pub(super) fn new(task_reg: TaskRegister, addr: Address) -> Self { pub(super) fn new(task_reg: TaskRegister, addr: Address) -> Self {
Self { Self {
@ -35,3 +33,17 @@ impl Connect<side::Tx> {
&tx.header &tx.header
} }
} }
struct Rx {
addr: Address,
}
impl Connect<side::Rx> {
pub(super) fn new(header: ConnectHeader) -> Self {
let (addr,) = header.into();
Self {
inner: Side::Rx(Rx { addr }),
_marker: side::Rx,
}
}
}

View File

@ -1,4 +1,4 @@
use crate::protocol::Address; use crate::protocol::{Address, Connect as ConnectHeader};
use parking_lot::Mutex; use parking_lot::Mutex;
use std::{ use std::{
collections::HashMap, collections::HashMap,
@ -45,6 +45,10 @@ impl Connection {
Connect::<side::Tx>::new(self.local_active_task_count.reg(), addr) Connect::<side::Tx>::new(self.local_active_task_count.reg(), addr)
} }
pub fn recv_connect(&self, header: ConnectHeader) -> Connect<side::Rx> {
Connect::<side::Rx>::new(header)
}
pub fn send_packet( pub fn send_packet(
&self, &self,
assoc_id: u16, assoc_id: u16,