mod byte;
pub mod processor;
pub mod message;
pub mod net;
pub mod string;
pub mod config;
pub mod crypto;
pub mod session;
use std::sync::mpsc::Sender;
use log::error;
pub use config::DomainConfig;
use crate::message::DNSMessage;
use crate::net::{NetworkMessage, NetworkMessagePtr};
#[repr(u8)]
#[derive(Debug, Eq, PartialEq, Copy, Clone)]
pub enum RequestError {
    NoHandshake,
    WrongNumberOfQuestions,
    CryptoFailure
}
pub fn send_message(response: DNSMessage, sending_channel: &Sender<NetworkMessagePtr>)
{
    match sending_channel.send(Box::new(
        NetworkMessage {
            buffer: Box::new(response.to_bytes()),
            peer: response.peer
        }
    )){
        Ok(_) => {}
        Err(e) => {
            error!("failed to pass a message to the network layer for delivery [{}]", e.to_string());
        }
    }
}