rlibdns 0.1.211

Rust DNS Library
Documentation
use crate::journal::inter::txn_op_codes::TxnOpCodes;
use crate::messages::inter::rr_classes::RRClasses;
use crate::messages::message::MessageRecord;
use crate::rr_data::inter::rr_data::RRData;

#[derive(Default, Debug, Clone)]
pub struct Txn {
    serial_0: u32,
    serial_1: u32,
    records: [Vec<MessageRecord>; 2]
}

impl Txn {

    pub fn new(serial_0: u32, serial_1: u32) -> Self {
        Self {
            serial_0,
            serial_1,
            records: Default::default()
        }
    }

    pub fn set_serial_0(&mut self, serial_0: u32) {
        self.serial_0 = serial_0;
    }

    pub fn get_serial_0(&self) -> u32 {
        self.serial_0
    }

    pub fn set_serial_1(&mut self, serial_1: u32) {
        self.serial_1 = serial_1;
    }

    pub fn get_serial_1(&self) -> u32 {
        self.serial_1
    }

    pub fn add_record(&mut self, op_code: TxnOpCodes, query: &str, class: RRClasses, ttl: u32, record: Box<dyn RRData>) {
        self.records[op_code as usize].push((query.to_string(), class, ttl, record));
    }

    pub fn get_records(&self, op_code: TxnOpCodes) -> &Vec<MessageRecord> {
        &self.records[op_code as usize]
    }
}