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,
pub tof_paddles: Arc<HashMap<u8, TofPaddle>>,
}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: TofPacketTypeType of the structure encoded in payload
payload: Vec<u8>The bytestream encoded structure
no_write_to_disk: boolmark a packet as not eligible to be written to disk
no_send_over_nw: boolmark a packet as not eligible to be sent over network FIXME - future extension
creation_time: Instantcreation_time for the instance
valid: bool§tof_paddles: Arc<HashMap<u8, TofPaddle>>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 FromRandom for TofPacket
Available on crate feature random only.
impl FromRandom for TofPacket
random only.fn from_random() -> Self
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 = 0
const SIZE: usize = 0
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 guess_size(
stream: &Vec<u8>,
pos: usize,
offset: usize,
) -> Result<(usize, usize, usize), SerializationError>
fn guess_size( stream: &Vec<u8>, pos: usize, offset: usize, ) -> Result<(usize, usize, usize), 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 UnsafeUnpin 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.