victorem 0.8.2

UPD Game Server Framework
Documentation
use crate::entities::{CommandPacket, StatePacket};
use std::time::{Duration, SystemTime, UNIX_EPOCH};

pub trait IWithKey {
    fn get(&self) -> Duration;
    fn set(&mut self, key: Duration);
}

impl IWithKey for StatePacket {
    fn get(&self) -> Duration {
        self.session_key
    }

    fn set(&mut self, key: Duration) {
        self.session_key = key
    }
}

impl IWithKey for CommandPacket {
    fn get(&self) -> Duration {
        self.session_key
    }

    fn set(&mut self, key: Duration) {
        self.session_key = key
    }
}

pub fn new_key() -> Duration {
    match SystemTime::now().duration_since(UNIX_EPOCH) {
        Ok(d) => d,
        Err(e) => e.duration(),
    }
}

pub struct Generator {
    key: Duration,
}

impl Generator {
    pub fn new() -> Generator {
        Generator { key: new_key() }
    }

    pub fn generate(&self) -> Duration {
        self.key
    }
}

pub struct Filter {
    key: Duration,
}

impl Filter {
    pub fn new(key: Duration) -> Filter {
        Filter { key }
    }

    pub fn is_valid(&self, value: &IWithKey) -> bool {
        self.key == value.get()
    }
}