Jake Probst 5 years ago
parent
commit
076d6e0915
  1. 3
      src/common/mod.rs
  2. 90
      src/common/pktvec.rs

3
src/common/mod.rs

@ -1,3 +1,6 @@
#[macro_use]
pub mod pktvec;
pub mod cipherkeys;
pub mod network;
pub mod serverstate;

90
src/common/pktvec.rs

@ -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…
Cancel
Save