pub struct TofPacket {
pub packet_type: TofPacketType,
pub payload: Vec<u8>,
pub no_write_to_disk: bool,
pub no_send_over_nw: bool,
pub creation_time: Instant,
pub valid: bool,
}
Expand description
Internal Tof communication protocol. Simple, yet powerful
A TofPacket has the following layout on disk HEAD : u16 = 0xAAAA TYPE : u8 = PacketType SIZE : u32 PAYLOAD : [u8;6-SIZE] TAIL : u16 = 0x5555
The total packet size is thus 13 + SIZE
Fields§
§packet_type: TofPacketType
Type of the structure encoded in payload
payload: Vec<u8>
The bytestream encoded structure
no_write_to_disk: bool
mark a packet as not eligible to be written to disk
no_send_over_nw: bool
mark a packet as not eligible to be sent over network FIXME - future extension
creation_time: Instant
creation_time for the instance
valid: bool
Implementations§
Source§impl TofPacket
impl TofPacket
pub fn new() -> Self
Sourcepub fn zmq_payload_brdcast(&self) -> Vec<u8> ⓘ
pub fn zmq_payload_brdcast(&self) -> Vec<u8> ⓘ
Generate a bytestream of self for ZMQ, prefixed with BRCT so all RBs will see it
Sourcepub fn zmq_payload_rb(&self, rb_id: u8) -> Vec<u8> ⓘ
pub fn zmq_payload_rb(&self, rb_id: u8) -> Vec<u8> ⓘ
Generate a bytestream of self for ZMQ, prefixed with RBX, to address only a certain board
Sourcepub fn unpack<T>(&self) -> Result<T, SerializationError>where
T: TofPackable + Serialization,
pub fn unpack<T>(&self) -> Result<T, SerializationError>where
T: TofPackable + Serialization,
Unpack the TofPacket and return its content
pub fn age(&self) -> u64
Trait Implementations§
Source§impl DataReader<TofPacket> for TofPacketReader
impl DataReader<TofPacket> for TofPacketReader
Source§fn prime_next_file(&mut self) -> Option<usize>
fn prime_next_file(&mut self) -> Option<usize>
Get the next file ready
fn get_header0(&self) -> u8
fn get_header1(&self) -> u8
Source§fn get_file_idx(&self) -> usize
fn get_file_idx(&self) -> usize
Source§fn set_file_idx(&mut self, file_idx: usize)
fn set_file_idx(&mut self, file_idx: usize)
Source§fn get_filenames(&self) -> &Vec<String>
fn get_filenames(&self) -> &Vec<String>
Source§fn set_cursor(&mut self, pos: usize)
fn set_cursor(&mut self, pos: usize)
Source§fn set_file_reader(&mut self, reader: BufReader<File>)
fn set_file_reader(&mut self, reader: BufReader<File>)
Source§fn read_next(&mut self) -> Option<TofPacket>
fn read_next(&mut self) -> Option<TofPacket>
Source§fn get_current_filename(&self) -> Option<&str>
fn get_current_filename(&self) -> Option<&str>
Source§fn first(&mut self) -> Option<T>
fn first(&mut self) -> Option<T>
Source§impl Frameable for TofPacket
impl Frameable for TofPacket
const CRFRAMEOBJECT_TYPE: CRFrameObjectType = CRFrameObjectType::TofPacket
Source§fn pack(&self) -> CRFrameObjectwhere
Self: Serialization,
fn pack(&self) -> CRFrameObjectwhere
Self: Serialization,
Source§impl PartialEq for TofPacket
Implement because TofPacket saves the creation time,
which never will be the same for 2 different instances
impl PartialEq for TofPacket
Implement because TofPacket saves the creation time, which never will be the same for 2 different instances
Source§impl Serialization for TofPacket
impl Serialization for TofPacket
Source§const SIZE: usize = 0usize
const SIZE: usize = 0usize
Source§fn from_bytestream(
stream: &Vec<u8>,
pos: &mut usize,
) -> Result<Self, SerializationError>
fn from_bytestream( stream: &Vec<u8>, pos: &mut usize, ) -> Result<Self, SerializationError>
Source§fn verify_fixed(
stream: &Vec<u8>,
pos: &mut usize,
) -> Result<(), SerializationError>
fn verify_fixed( stream: &Vec<u8>, pos: &mut usize, ) -> Result<(), SerializationError>
Source§fn from_bytestream_alt(
bytestream: &Vec<u8>,
pos: &mut usize,
) -> Result<Self, SerializationError>where
Self: Sized,
fn from_bytestream_alt(
bytestream: &Vec<u8>,
pos: &mut usize,
) -> Result<Self, SerializationError>where
Self: Sized,
Auto Trait Implementations§
impl Freeze for TofPacket
impl RefUnwindSafe for TofPacket
impl Send for TofPacket
impl Sync for TofPacket
impl Unpin for TofPacket
impl UnwindSafe for TofPacket
Blanket Implementations§
Source§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
Source§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT
modifier for aggregate functions Read moreSource§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL
modifier for aggregate functions Read moreSource§fn aggregate_filter<P>(self, f: P) -> Self::Output
fn aggregate_filter<P>(self, f: P) -> Self::Output
Source§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
self
to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
&self
to an expression for Diesel’s query builder. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.