pub struct FrameData {
pub scope_delta: Vec<Arc<ScopeDetails>>,
pub full_delta: bool,
/* private fields */
}
Expand description
One frame worth of profile data, collected from many sources.
If you turn on the “packing” feature, then FrameData
has interior mutability with double storage:
- Unpacked data (
UnpackedFrameData
) - Packed (compressed) data
One or both are always stored. This allows RAM-efficient storage and viewing of many frames of profiling data. Packing and unpacking is done lazily, on-demand.
Fields§
§scope_delta: Vec<Arc<ScopeDetails>>
Scopes that were registered during this frame.
full_delta: bool
Does Self::scope_delta
contain all the scopes up to this point?
If false
, it just contains the new scopes since last frame data.
Implementations§
source§impl FrameData
impl FrameData
sourcepub fn new(
frame_index: FrameIndex,
thread_streams: BTreeMap<ThreadInfo, StreamInfo>,
scope_delta: Vec<Arc<ScopeDetails>>,
full_delta: bool,
) -> Result<Self>
pub fn new( frame_index: FrameIndex, thread_streams: BTreeMap<ThreadInfo, StreamInfo>, scope_delta: Vec<Arc<ScopeDetails>>, full_delta: bool, ) -> Result<Self>
Create a new FrameData
.
sourcepub fn packed_size(&self) -> Option<usize>
pub fn packed_size(&self) -> Option<usize>
Number of bytes used by the packed data, if packed.
sourcepub fn unpacked_size(&self) -> Option<usize>
pub fn unpacked_size(&self) -> Option<usize>
Number of bytes used when unpacked, if known.
sourcepub fn bytes_of_ram_used(&self) -> usize
pub fn bytes_of_ram_used(&self) -> usize
bytes currently used by the unpacked and packed data.
sourcepub fn has_packed(&self) -> bool
pub fn has_packed(&self) -> bool
Do we have a packed version stored internally?
sourcepub fn has_unpacked(&self) -> bool
pub fn has_unpacked(&self) -> bool
Do we have a unpacked version stored internally?
sourcepub fn packing_info(&self) -> PackingInfo
pub fn packing_info(&self) -> PackingInfo
Provides an overview of the frame’s packing status.
The function retrieves both the sizes of the unpacked and packed frames, as well as whether packed/unpacked versions of the frame exist internally. The goal of this function is to minimize the number of lock accesses by consolidating information retrieval into a single operation.
sourcepub fn unpacked(&self) -> Result<Arc<UnpackedFrameData>>
pub fn unpacked(&self) -> Result<Arc<UnpackedFrameData>>
Return the unpacked data.
This will lazily unpack if needed (and only once).
Returns Err
if failing to decode the packed data.
sourcepub fn write_into(
&self,
scope_collection: &ScopeCollection,
send_all_scopes: bool,
write: &mut impl Write,
) -> Result<()>
pub fn write_into( &self, scope_collection: &ScopeCollection, send_all_scopes: bool, write: &mut impl Write, ) -> Result<()>
source§impl FrameData
impl FrameData
sourcepub fn frame_index(&self) -> u64
pub fn frame_index(&self) -> u64
The index of this frame.
sourcepub fn range_ns(&self) -> (NanoSecond, NanoSecond)
pub fn range_ns(&self) -> (NanoSecond, NanoSecond)
The range in nanoseconds of the entire profile frame.
sourcepub fn duration_ns(&self) -> NanoSecond
pub fn duration_ns(&self) -> NanoSecond
The duration in nanoseconds of the entire profile frame.
Auto Trait Implementations§
impl !Freeze for FrameData
impl !RefUnwindSafe for FrameData
impl Send for FrameData
impl Sync for FrameData
impl Unpin for FrameData
impl UnwindSafe for FrameData
Blanket Implementations§
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> 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 more