Struct de_net::connection::databuf::Slot
source · struct Slot {
used: bool,
ordinal: usize,
data_offset: usize,
len: usize,
}
Expand description
A single slot in a bytes ring-buffer.
A slot corresponds to a single (ring-like) contiguous part of the data buffer. Every byte (position) in the data buffer belongs to exactly one slot (i.e. no gaps and no overlaps).
A slot may be used or unused. Unused slots are pruned once they reach end of the buffer.
Fields§
§used: bool
True if the slot is no longer used and may be pruned.
ordinal: usize
Unique number of the slot. Each new slot is assigned an ordinal, which is a wrapping increment of the ordinal of the previous slot, or 0 if there is no slots in the buffer at the time of slot creation.
Given a slot a
and the first slot in the slots buffer f
, index of
slot a
is a.ordinal.wrapping_sub(f.ordinal)
.
data_offset: usize
Bytes offset of the slot since the last time the buffer was empty.
Due to the fact that slots are pruned, this number may not correspond
to the actual offset from the beginning of the data buffer. Offsets are
modular over the maximum of usize
(wrapping versions of arithmetic
operations should be used).
Wrapping difference between data offsets of two (nearby) slots corresponds to the distance of the slots inside the data buffer.
len: usize
Size (number of bytes) of the slot in the data buffer.