use core::marker::PhantomData;
pub struct ServiceRequestData<T: ?Sized> {
request_message_ptr: *const u8,
request_message_size: usize,
_marker: PhantomData<T>,
}
impl<T: Sized> ServiceRequestData<T> {
pub fn new(request_message_ptr: *const T, request_message_size: usize) -> Self {
Self {
request_message_ptr: request_message_ptr as *const u8,
request_message_size,
_marker: PhantomData,
}
}
pub fn get_request_message_ref(&self) -> &T {
unsafe { &*(self.request_message_ptr as *const T) }
}
pub fn get_request_message_ref_mut(&mut self) -> &mut T {
unsafe { &mut *(self.request_message_ptr as *mut T) }
}
pub fn set_request_message_ptr(&mut self, message_ptr: *const T) {
self.request_message_ptr = message_ptr as *const u8;
}
}
impl<T: ?Sized> ServiceRequestData<T> {
pub fn get_request_message_ptr(&self) -> *const u8 {
self.request_message_ptr
}
pub fn get_request_message_ptr_mut(&mut self) -> *mut u8 {
self.request_message_ptr as *mut u8
}
pub fn get_request_message_size(&self) -> usize {
self.request_message_size
}
}