use anyhow::Result;
use enum_dispatch::enum_dispatch;
use crate::{cfg::config::Config, models::opcode::BhsOpcode};
#[enum_dispatch]
pub trait BasicHeaderSegment: Sized {
fn get_opcode(&self) -> &BhsOpcode;
fn get_initiator_task_tag(&self) -> u32;
fn ahs_length_bytes(&self) -> usize;
fn data_length_bytes(&self) -> usize;
fn total_length_bytes(&self) -> usize;
}
pub trait Builder: Sized {
type Header: AsRef<[u8]>;
fn append_data(self, more: Vec<u8>) -> Self;
fn build(self, cfg: &Config) -> Result<(Self::Header, Vec<u8>)>;
}