Struct rerun::external::re_viewer_context::store_hub::StoreHub

source ·
pub struct StoreHub {
    persistence: BlueprintPersistence,
    active_rec_id: Option<StoreId>,
    active_application_id: Option<ApplicationId>,
    default_blueprint_by_app_id: HashMap<ApplicationId, StoreId, RandomState>,
    active_blueprint_by_app_id: HashMap<ApplicationId, StoreId, RandomState>,
    store_bundle: StoreBundle,
    caches_per_recording: HashMap<StoreId, Caches, RandomState>,
    blueprint_last_save: HashMap<StoreId, ChunkStoreGeneration, RandomState>,
    blueprint_last_gc: HashMap<StoreId, ChunkStoreGeneration, RandomState>,
}
Expand description

Interface for accessing all blueprints and recordings

The StoreHub provides access to the EntityDb instances that are used to store both blueprints and recordings.

Internally, the StoreHub tracks which ApplicationId and recording id (StoreId) are currently active in the viewer. These can be configured using StoreHub::set_active_recording_id and StoreHub::set_active_app respectively.

§Blueprints

For each ApplicationId, the StoreHub also keeps track of two blueprints:

  • The active blueprint
  • The default blueprint

Either on of these can be None.

The active blueprint is what the user would see and edit, if they were to select that app id. If there is no active blueprint, the default will be cloned and made active.

The default blueprint is usually the blueprint set by the SDK. This lets users reset the active blueprint to the one sent by the SDK.

Fields§

§persistence: BlueprintPersistence§active_rec_id: Option<StoreId>§active_application_id: Option<ApplicationId>§default_blueprint_by_app_id: HashMap<ApplicationId, StoreId, RandomState>§active_blueprint_by_app_id: HashMap<ApplicationId, StoreId, RandomState>§store_bundle: StoreBundle§caches_per_recording: HashMap<StoreId, Caches, RandomState>§blueprint_last_save: HashMap<StoreId, ChunkStoreGeneration, RandomState>§blueprint_last_gc: HashMap<StoreId, ChunkStoreGeneration, RandomState>

Implementations§

source§

impl StoreHub

source

pub fn welcome_screen_app_id() -> ApplicationId

App ID used as a marker to display the welcome screen.

source

pub fn test_hub() -> StoreHub

Used only for tests

source

pub fn new( persistence: BlueprintPersistence, setup_welcome_screen_blueprint: &dyn Fn(&mut EntityDb) ) -> StoreHub

Create a new StoreHub.

The StoreHub will contain a single empty blueprint associated with the app ID returned by [StoreHub::welcome_screen_app_id]. It should be used as a marker to display the welcome screen.

source

pub fn store_bundle(&self) -> &StoreBundle

All the loaded recordings and blueprints.

source

pub fn read_context(&mut self) -> Option<StoreContext<'_>>

Get a read-only StoreContext from the StoreHub if one is available.

All of the returned references to blueprints and recordings will have a matching ApplicationId.

source

pub fn entity_db_mut(&mut self, store_id: &StoreId) -> &mut EntityDb

Mutable access to a EntityDb by id

source

pub fn insert_entity_db(&mut self, entity_db: EntityDb)

Insert a new recording or blueprint into the StoreHub.

Note that the recording is not automatically made active. Use StoreHub::set_active_recording_id if needed.

source

pub fn remove(&mut self, store_id: &StoreId)

source

pub fn retain(&mut self, should_retain: impl FnMut(&EntityDb) -> bool)

source

pub fn clear_recordings(&mut self)

Remove all open recordings and applications, and go to the welcome page.

source

pub fn set_active_app(&mut self, app_id: ApplicationId)

Change the active ApplicationId

source

pub fn close_app(&mut self, app_id: &ApplicationId)

Close this application and all its recordings.

source

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

source

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

Directly access the EntityDb for the active recording.

source

pub fn active_recording(&self) -> Option<&EntityDb>

Directly access the EntityDb for the active recording.

source

pub fn active_caches(&self) -> Option<&Caches>

Directly access the Caches for the active recording.

This returns None only if there is no active recording: the cache itself is always present if there’s an active recording.

source

pub fn set_active_recording_id(&mut self, recording_id: StoreId)

Change the active/visible recording id.

This will also change the application-id to match the newly active recording.

source

pub fn set_activate_recording(&mut self, store_id: StoreId)

Activate a recording by its StoreId.

source

pub fn default_blueprint_id_for_app( &self, app_id: &ApplicationId ) -> Option<&StoreId>

source

pub fn default_blueprint_for_app( &self, app_id: &ApplicationId ) -> Option<&EntityDb>

source

pub fn set_default_blueprint_for_app( &mut self, app_id: &ApplicationId, blueprint_id: &StoreId ) -> Result<(), Error>

Change which blueprint is the default for a given ApplicationId

source

pub fn clear_default_blueprint(&mut self)

Clear the current default blueprint

source

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

What is the active blueprint for the active application?

source

pub fn active_blueprint_id_for_app( &self, app_id: &ApplicationId ) -> Option<&StoreId>

source

pub fn active_blueprint_for_app( &self, app_id: &ApplicationId ) -> Option<&EntityDb>

source

pub fn set_cloned_blueprint_active_for_app( &mut self, app_id: &ApplicationId, blueprint_id: &StoreId ) -> Result<(), Error>

Make blueprint active for a given ApplicationId

We never activate a blueprint directly. Instead, we clone it and activate the clone.

source

pub fn is_active_blueprint(&self, blueprint_id: &StoreId) -> bool

Is the given blueprint id the active blueprint for any app id?

source

pub fn clear_active_blueprint(&mut self)

Clear the currently active blueprint

source

pub fn clear_all_cloned_blueprints(&mut self)

Cloned blueprints are the ones the user has edited, i.e. NOT sent from the SDK.

source

pub fn purge_empty(&mut self)

Remove any empty EntityDbs from the hub

source

pub fn purge_fraction_of_ram(&mut self, fraction_to_purge: f32)

Call EntityDb::purge_fraction_of_ram on every recording

source

pub fn remove_recording_by_uri(&mut self, uri: &str)

Remove any recordings with a network source pointing at this uri.

source

pub fn gc_blueprints(&mut self)

source

pub fn begin_frame(&mut self, renderer_active_frame_idx: u64)

See re_viewer_context::Cache::begin_frame.

source

pub fn save_app_blueprints(&mut self) -> Result<(), Error>

Persist any in-use blueprints to durable storage.

source

pub fn stats(&self) -> StoreHubStats

Populate a StoreHubStats based on the active app.

Trait Implementations§

source§

impl Default for StoreHub

source§

fn default() -> StoreHub

Returns the “default value” for a type. 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> 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.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
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

§

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