xio_common 0.12.0

XIO commonly used functionality
Documentation
use crate::base::JobStoppedReason;
use snafu::ResultExt;
use std::io::{Read, Write};
use crate::{error, ReadExt, Result, TryFrom, WithFixedPayloadLength, WriteExt};

impl WithFixedPayloadLength for JobStoppedReason {
    const FIXED_PAYLOAD_LENGTH: u16 = u8::FIXED_PAYLOAD_LENGTH;
}

pub(crate) trait JobStoppedReasonWriterExt: Write {
    fn write_job_stopped_reason(
        &mut self,
        r: JobStoppedReason,
    ) -> Result<()> {
        self.write_u8(r as u8)
    }
}

impl<B: Write + ?Sized> JobStoppedReasonWriterExt for B {}

pub(crate) trait JobStoppedReasonReaderExt: Read {
    fn read_job_stopped_reason(&mut self) -> Result<JobStoppedReason> {
        let value = self.read_u8()?;
        JobStoppedReason::try_from(value).context(error::Io)
    }
}

impl<B: Read + ?Sized> JobStoppedReasonReaderExt for B {}