nardol 0.0.3

Simple framework that provides structure to data sent and received from network.
Documentation
use serde::{Deserialize, Serialize};

use crate::bytes::Bytes;
use crate::error::Error;
use crate::message::{ContentType, MetaDataType};
use crate::ron::{FromRon, ToRon};

use super::message::{Context, Output};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetaData {}

impl Default for MetaData {
    fn default() -> Self {
        Self::empty()
    }
}

impl FromRon<'_> for MetaData {}
impl ToRon for MetaData {}

impl TryFrom<Bytes> for MetaData {
    type Error = Error;

    fn try_from(value: Bytes) -> Result<Self, Self::Error> {
        todo!()
    }
}

impl TryFrom<MetaData> for Bytes {
    type Error = Error;

    fn try_from(value: MetaData) -> Result<Self, Self::Error> {
        todo!()
    }
}

impl<'a, C> MetaDataType<'a, MetaData, C> for MetaData
where
    C: ContentType<'a, MetaData, C>,
{
    type SendContext = Context;
    type ReceiveContext = Context;

    fn send(
        self,
        stream: &mut std::net::TcpStream,
        context: Option<Self::SendContext>,
    ) -> Result<Option<<C as ContentType<'a, MetaData, C>>::SendContext>, Error> {
        todo!()
    }

    fn receive(
        stream: &mut std::net::TcpStream,
        context: &Option<Self::ReceiveContext>,
    ) -> Result<
        (
            Self,
            Option<<C as ContentType<'a, MetaData, C>>::ReceiveContext>,
        ),
        Error,
    > {
        todo!()
    }
}

impl MetaData {
    pub fn new() -> Self {
        Self {}
    }

    pub fn empty() -> Self {
        Self {}
    }
}