Struct re_viewer::external::re_entity_db::entity_db::EntityDb

source ·
pub struct EntityDb {
    pub data_source: Option<SmartChannelSource>,
    set_store_info: Option<SetStoreInfo>,
    last_modified_at: Instant,
    latest_row_id: Option<RowId>,
    entity_path_from_hash: HashMap<EntityPathHash, EntityPath, BuildHasherDefault<NoHashHasher<EntityPathHash>>>,
    times_per_timeline: TimesPerTimeline,
    time_histogram_per_timeline: TimeHistogramPerTimeline,
    tree: EntityTree,
    storage_engine: StorageEngine,
    stats: IngestionStatistics,
}
Expand description

An in-memory database built from a stream of LogMsges.

NOTE: all mutation is to be done via public functions!

Fields§

§data_source: Option<SmartChannelSource>

Set by whomever created this EntityDb.

Clones of an EntityDb gets a None source.

§set_store_info: Option<SetStoreInfo>§last_modified_at: Instant§latest_row_id: Option<RowId>§entity_path_from_hash: HashMap<EntityPathHash, EntityPath, BuildHasherDefault<NoHashHasher<EntityPathHash>>>§times_per_timeline: TimesPerTimeline§time_histogram_per_timeline: TimeHistogramPerTimeline§tree: EntityTree§storage_engine: StorageEngine§stats: IngestionStatistics

Implementations§

source§

impl EntityDb

source

pub fn new(store_id: StoreId) -> EntityDb

source

pub fn with_store_config( store_id: StoreId, store_config: ChunkStoreConfig ) -> EntityDb

source

pub fn tree(&self) -> &EntityTree

source

pub fn storage_engine(&self) -> StorageEngineReadGuard<'_>

Returns a read-only guard to the backing StorageEngine.

source

pub fn storage_engine_arc(&self) -> StorageEngineArcReadGuard

Returns a read-only guard to the backing StorageEngine.

That guard can be cloned at will and has a static lifetime.

It is not possible to insert any more data in this EntityDb until the returned guard, and any clones, have been dropped.

source

pub fn store_info_msg(&self) -> Option<&SetStoreInfo>

source

pub fn store_info(&self) -> Option<&StoreInfo>

source

pub fn app_id(&self) -> Option<&ApplicationId>

source

pub fn latest_at( &self, query: &LatestAtQuery, entity_path: &EntityPath, component_names: impl IntoIterator<Item = ComponentName> ) -> LatestAtResults

Queries for the given component_names using latest-at semantics.

See re_query::LatestAtResults for more information about how to handle the results.

This is a cached API – data will be lazily cached upon access.

source

pub fn latest_at_component<C>( &self, entity_path: &EntityPath, query: &LatestAtQuery ) -> Option<((TimeInt, RowId), C)>
where C: Component,

Get the latest index and value for a given dense re_types_core::Component.

This assumes that the row we get from the store contains at most one instance for this component; it will log a warning otherwise.

This should only be used for “mono-components” such as Transform and Tensor.

This is a best-effort helper, it will merely log errors on failure.

source

pub fn latest_at_component_quiet<C>( &self, entity_path: &EntityPath, query: &LatestAtQuery ) -> Option<((TimeInt, RowId), C)>
where C: Component,

Get the latest index and value for a given dense re_types_core::Component.

This assumes that the row we get from the store contains at most one instance for this component; it will log a warning otherwise.

This should only be used for “mono-components” such as Transform and Tensor.

This is a best-effort helper, and will quietly swallow any errors.

source

pub fn latest_at_component_at_closest_ancestor<C>( &self, entity_path: &EntityPath, query: &LatestAtQuery ) -> Option<(EntityPath, (TimeInt, RowId), C)>
where C: Component,

source

pub fn store_kind(&self) -> StoreKind

source

pub fn store_id(&self) -> StoreId

source

pub fn cloned_from(&self) -> Option<&StoreId>

If this entity db is the result of a clone, which store was it cloned from?

A cloned store always gets a new unique ID.

We currently only use entity db cloning for blueprints: when we activate a default blueprint that was received on the wire (e.g. from a recording), we clone it and make the clone the active blueprint. This means all active blueprints are clones.

source

pub fn timelines(&self) -> impl ExactSizeIterator

source

pub fn times_per_timeline(&self) -> &TimesPerTimeline

source

pub fn has_any_data_on_timeline(&self, timeline: &Timeline) -> bool

source

pub fn time_range_for(&self, timeline: &Timeline) -> Option<ResolvedTimeRange>

Returns the time range of data on the given timeline, ignoring any static times.

source

pub fn time_histogram(&self, timeline: &Timeline) -> Option<&Int64Histogram>

Histogram of all events on the timeeline, of all entities.

source

pub fn num_rows(&self) -> u64

source

pub fn generation(&self) -> ChunkStoreGeneration

Return the current ChunkStoreGeneration. This can be used to determine whether the database has been modified since the last time it was queried.

source

pub fn last_modified_at(&self) -> Instant

source

pub fn latest_row_id(&self) -> Option<RowId>

The highest RowId in the store, which corresponds to the last edit time. Ignores deletions.

source

pub fn is_empty(&self) -> bool

source

pub fn entity_paths(&self) -> Vec<&EntityPath>

A sorted list of all the entity paths in this database.

source

pub fn ingestion_stats(&self) -> &IngestionStatistics

source

pub fn entity_path_from_hash( &self, entity_path_hash: &EntityPathHash ) -> Option<&EntityPath>

source

pub fn is_known_entity(&self, entity_path: &EntityPath) -> bool

Returns true also for entities higher up in the hierarchy.

source

pub fn is_logged_entity(&self, entity_path: &EntityPath) -> bool

If you log world/points, then that is a logged entity, but world is not, unless you log something to world too.

source

pub fn add(&mut self, msg: &LogMsg) -> Result<Vec<ChunkStoreEvent>, Error>

source

pub fn add_chunk( &mut self, chunk: &Arc<Chunk> ) -> Result<Vec<ChunkStoreEvent>, Error>

source

pub fn set_store_info(&mut self, store_info: SetStoreInfo)

source

pub fn gc_everything_but_the_latest_row_on_non_default_timelines( &mut self ) -> Vec<ChunkStoreEvent>

source

pub fn purge_fraction_of_ram( &mut self, fraction_to_purge: f32 ) -> Vec<ChunkStoreEvent>

Free up some RAM by forgetting the older parts of all timelines.

source

pub fn drop_time_range( &mut self, timeline: &Timeline, drop_range: ResolvedTimeRange ) -> Vec<ChunkStoreEvent>

Drop all events in the given time range from the given timeline.

Used to implement undo (erase the last event from the blueprint db).

source

pub fn drop_entity_path(&mut self, entity_path: &EntityPath)

Unconditionally drops all the data for a given EntityPath .

This is not recursive. Children of this entity will not be affected.

To drop the entire subtree below an entity, see: Self::drop_entity_path_recursive.

source

pub fn drop_entity_path_recursive(&mut self, entity_path: &EntityPath)

Unconditionally drops all the data for a given EntityPath and all its children.

source

pub fn sort_key(&self) -> impl Ord

Key used for sorting recordings in the UI.

source

pub fn to_messages( &self, time_selection: Option<(Timeline, ResolvedTimeRangeF)> ) -> impl Iterator<Item = Result<LogMsg, ChunkError>>

Export the contents of the current database to a sequence of messages.

If time_selection is specified, then only data for that specific timeline over that specific time range will be accounted for.

source

pub fn clone_with_new_id(&self, new_id: StoreId) -> Result<EntityDb, Error>

Make a clone of this EntityDb, assigning it a new StoreId.

source§

impl EntityDb

§Stats
source

pub fn subtree_stats_static( &self, engine: &StorageEngineReadGuard<'_>, entity_path: &EntityPath ) -> ChunkStoreChunkStats

Returns the stats for the static store of the entity and all its children, recursively.

This excludes temporal data.

source

pub fn subtree_stats_on_timeline( &self, engine: &StorageEngineReadGuard<'_>, entity_path: &EntityPath, timeline: &Timeline ) -> ChunkStoreChunkStats

Returns the stats for the entity and all its children on the given timeline, recursively.

This excludes static data.

source

pub fn subtree_has_data_on_timeline( &self, engine: &StorageEngineReadGuard<'_>, timeline: &Timeline, entity_path: &EntityPath ) -> bool

Returns true if an entity or any of its children have any data on the given timeline.

This includes static data.

source

pub fn subtree_has_temporal_data_on_timeline( &self, engine: &StorageEngineReadGuard<'_>, timeline: &Timeline, entity_path: &EntityPath ) -> bool

Returns true if an entity or any of its children have any temporal data on the given timeline.

This ignores static data.

Trait Implementations§

source§

impl DataUi for EntityDb

source§

fn data_ui( &self, ctx: &ViewerContext<'_>, ui: &mut Ui, ui_layout: UiLayout, _query: &LatestAtQuery, _db: &EntityDb )

If you need to lookup something in the chunk store, use the given query to do so.
source§

fn data_ui_recording( &self, ctx: &ViewerContext<'_>, ui: &mut Ui, ui_layout: UiLayout )

Called Self::data_ui using the default query and recording.
source§

impl SizeBytes for EntityDb

source§

fn heap_size_bytes(&self) -> u64

Returns the total size of self on the heap, in bytes.
source§

fn total_size_bytes(&self) -> u64

Returns the total size of self in bytes, accounting for both stack and heap space.
source§

fn stack_size_bytes(&self) -> u64

Returns the total size of self on the stack, in bytes. Read more
source§

fn is_pod() -> bool

Is Self just plain old data? Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> EntityDataUi for T
where T: DataUi,

source§

fn entity_data_ui( &self, ctx: &ViewerContext<'_>, ui: &mut Ui, ui_layout: UiLayout, entity_path: &EntityPath, _row_id: Option<RowId>, query: &LatestAtQuery, db: &EntityDb )

If you need to lookup something in the chunk store, use the given query to do so.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> To for T
where T: ?Sized,

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Ungil for T
where T: Send,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,