pktvec
This commit is contained in:
parent
61264d9bb1
commit
076d6e0915
@ -1,3 +1,6 @@
|
|||||||
|
#[macro_use]
|
||||||
|
pub mod pktvec;
|
||||||
|
|
||||||
pub mod cipherkeys;
|
pub mod cipherkeys;
|
||||||
pub mod network;
|
pub mod network;
|
||||||
pub mod serverstate;
|
pub mod serverstate;
|
||||||
|
90
src/common/pktvec.rs
Normal file
90
src/common/pktvec.rs
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
use std::collections::VecDeque;
|
||||||
|
use libpso::PSOPacket;
|
||||||
|
|
||||||
|
pub struct PktVec {
|
||||||
|
pkts: VecDeque<Box<dyn PSOPacket>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PktVec {
|
||||||
|
pub fn new() -> PktVec {
|
||||||
|
PktVec {
|
||||||
|
pkts: VecDeque::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn push(&mut self, pkt: Box<dyn PSOPacket>) {
|
||||||
|
self.pkts.push_back(pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn append(&mut self, pkts: Vec<Box<dyn PSOPacket>>) {
|
||||||
|
self.pkts.append(&mut VecDeque::from(pkts));
|
||||||
|
}
|
||||||
|
/*pub fn append(&mut self, pkts: &mut Vec<Box<dyn PSOPacket>>) {
|
||||||
|
self.pkts.append(&mut pkts.into());
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
impl Iterator for PktVec {
|
||||||
|
type Item = Box<dyn PSOPacket>;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
/*if self.index < self.pkts.len() {
|
||||||
|
let pkt = Some(self.pkts[self.index]);
|
||||||
|
self.index += 1;
|
||||||
|
pkt
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
None
|
||||||
|
}*/
|
||||||
|
self.pkts.pop_front()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! pktvec {
|
||||||
|
( $( $pkt:expr ),* ) => {
|
||||||
|
{
|
||||||
|
let mut pkts = Box::new(PktVec::new());
|
||||||
|
$(
|
||||||
|
pkts.push(Box::new($pkt));
|
||||||
|
)*
|
||||||
|
pkts
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
struct PktVecIter {
|
||||||
|
iter: Box<dyn Iterator<Item = Box<dyn PSOPacket>>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Iterator for PktVecIter {
|
||||||
|
type Item = Box<dyn PSOPacket>;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
self.iter.next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct PktVec {
|
||||||
|
pkts: Vec<Box<dyn PSOPacket>>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PktVec {
|
||||||
|
fn push(&mut self, pkt: impl PSOPacket) {
|
||||||
|
self.pkts.push(Box::new(pkt))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn iter(&self) -> PktVecIter {
|
||||||
|
PktVecIter {
|
||||||
|
iter: self.pkts.iter()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
Loading…
x
Reference in New Issue
Block a user