use crate::command::correlated_message_flyweight::{CorrelatedMessageDefn, CorrelatedMessageFlyweight};
use crate::concurrent::atomic_buffer::AtomicBuffer;
use crate::utils::types::Index;
#[repr(C, packed(4))]
#[derive(Copy, Clone)]
pub(crate) struct TerminateDriverDefn {
correlated_message: CorrelatedMessageDefn,
token_length: i32,
}
pub const TERMINATE_DRIVER_LENGTH: Index = std::mem::size_of::<TerminateDriverDefn>() as Index;
pub(crate) struct TerminateDriverFlyweight {
correlated_message_flyweight: CorrelatedMessageFlyweight,
m_struct: *mut TerminateDriverDefn, }
impl TerminateDriverFlyweight {
pub fn new(buffer: AtomicBuffer, offset: Index) -> Self {
let correlated_message_flyweight = CorrelatedMessageFlyweight::new(buffer, offset);
let m_struct = correlated_message_flyweight
.flyweight
.overlay_struct::<TerminateDriverDefn>(0);
Self {
correlated_message_flyweight,
m_struct,
}
}
#[inline]
pub unsafe fn set_token_buffer(&mut self, token_buffer: *const u8, token_length: Index) {
(*self.m_struct).token_length = token_length;
if token_length > 0 {
self.correlated_message_flyweight.flyweight.put_bytes(
TERMINATE_DRIVER_LENGTH,
std::slice::from_raw_parts(token_buffer, token_length as usize),
)
}
}
#[inline]
pub fn length(&self) -> Index {
unsafe { TERMINATE_DRIVER_LENGTH + (*self.m_struct).token_length as Index }
}
#[inline]
pub fn set_client_id(&mut self, value: i64) {
self.correlated_message_flyweight.set_client_id(value);
}
#[inline]
pub fn set_correlation_id(&mut self, value: i64) {
self.correlated_message_flyweight.set_correlation_id(value);
}
}