#[non_exhaustive]pub struct MemoryReport {Show 42 fields
pub group_cache: CollectionStats,
pub device_registry_cache: CollectionStats,
pub lid_pn_lid_entries: CollectionStats,
pub lid_pn_pn_entries: CollectionStats,
pub recent_messages: CollectionStats,
pub sender_key_device_cache: CollectionStats,
pub group_devices_memo: CollectionStats,
pub dm_devices_memo: CollectionStats,
pub message_retry_counts: u64,
pub undecryptable_dispatched: u64,
pub pdo_pending_requests: u64,
pub pdo_requested: u64,
pub history_sync_tasks: CollectionStats,
pub history_sync_tasks_peak: u64,
pub history_sync_payload_bytes_peak: u64,
pub session_locks: u64,
pub chat_lanes: u64,
pub group_distribution_locks: u64,
pub group_distribution_lock_evictions: u64,
pub group_distribution_lock_eviction_blocks: u64,
pub resend_rate_limiter_chats: u64,
pub transport_ack_queue: usize,
pub delivery_receipt_queue: usize,
pub response_waiters: usize,
pub node_waiters: usize,
pub pending_retries: usize,
pub presence_subscriptions: usize,
pub app_state_key_requests: usize,
pub app_state_syncing: usize,
pub signal_sessions: CollectionStats,
pub signal_identities: CollectionStats,
pub signal_sender_keys: CollectionStats,
pub plugins: u64,
pub plugin_install_tasks: u64,
pub plugin_connection_tasks: u64,
pub plugin_connection_generations: u64,
pub plugin_core_event_subscriptions: u64,
pub plugin_event_endpoints: u64,
pub plugin_event_endpoint_capacity: u64,
pub plugin_event_queue: CollectionStats,
pub chatstate_handlers: usize,
pub custom_enc_handlers: usize,
}Expand description
On-demand report of the client’s internal collections: entry counts plus estimated retained heap bytes for the memory-dominant caches.
Counts are approximate (caches may have pending evictions); byte figures
are honest estimates (encoded-size proxies for Signal records, payload
sums elsewhere — see wacore::stats::HeapSize), suitable for
per-session attribution and leak detection, not byte-exact accounting.
Store-backed caches report bytes: 0 — their entries live outside this
process.
Call Client::memory_report to obtain one. Nothing is computed unless
called.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.group_cache: CollectionStats§device_registry_cache: CollectionStats§lid_pn_lid_entries: CollectionStats§lid_pn_pn_entries: CollectionStatsEntry count of the PN-direction map. Both maps share the same
Arc<LidPnEntry> payloads, attributed to
Self::lid_pn_lid_entries; bytes here cover only entries the LID
map no longer holds (normally 0), so the total counts each once.
recent_messages: CollectionStats§sender_key_device_cache: CollectionStats§group_devices_memo: CollectionStats§dm_devices_memo: CollectionStats§message_retry_counts: u64§undecryptable_dispatched: u64§pdo_pending_requests: u64§pdo_requested: u64§history_sync_tasks: CollectionStatsQueued/running history-sync tasks and their logical compressed-payload
byte sum. A shared Bytes slice may retain a larger backing allocation,
whose capacity is not exposed by the type.
history_sync_tasks_peak: u64Lifetime high-water mark of queued/running history-sync tasks.
history_sync_payload_bytes_peak: u64Lifetime high-water mark of logical compressed-payload bytes.
session_locks: u64§chat_lanes: u64§group_distribution_locks: u64§group_distribution_lock_evictions: u64Cumulative capacity evictions; poll successive reports to derive a rate.
group_distribution_lock_eviction_blocks: u64Cumulative attempts that kept a live lane and temporarily exceeded capacity.
resend_rate_limiter_chats: u64§transport_ack_queue: usizeDeferred acks queued for the transport-ack worker. Unbounded, and each entry retains the full inbound node plus a flush guard, so a stalled transport shows up here as a growing backlog.
delivery_receipt_queue: usizeDelivery receipts queued for their worker, same shape as above.
response_waiters: usize§node_waiters: usize§pending_retries: usize§presence_subscriptions: usize§app_state_key_requests: usize§app_state_syncing: usize§signal_sessions: CollectionStats§signal_identities: CollectionStats§signal_sender_keys: CollectionStats§plugins: u64plugins only.plugin_install_tasks: u64plugins only.plugin_connection_tasks: u64plugins only.plugin_connection_generations: u64plugins only.plugin_core_event_subscriptions: u64plugins only.plugin_event_endpoints: u64plugins only.plugin_event_endpoint_capacity: u64plugins only.plugin_event_queue: CollectionStatsplugins only.Unique custom-event envelopes and payload bytes still retained in endpoint queues.
chatstate_handlers: usize§custom_enc_handlers: usizeImplementations§
Source§impl MemoryReport
impl MemoryReport
Sourcepub fn total_estimated_bytes(&self) -> u64
pub fn total_estimated_bytes(&self) -> u64
Sum of every estimated byte figure in the report.
Trait Implementations§
Source§impl Clone for MemoryReport
impl Clone for MemoryReport
Source§fn clone(&self) -> MemoryReport
fn clone(&self) -> MemoryReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MemoryReport
impl Debug for MemoryReport
Auto Trait Implementations§
impl Freeze for MemoryReport
impl RefUnwindSafe for MemoryReport
impl Send for MemoryReport
impl Sync for MemoryReport
impl Unpin for MemoryReport
impl UnsafeUnpin for MemoryReport
impl UnwindSafe for MemoryReport
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
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§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 moreimpl<T> MaybeSend for T
impl<T> MaybeSendSync for T
impl<T> Spawnable for Twhere
T: Send + 'static,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more