Struct rerun::external::re_viewer_context::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
impl StoreHub
sourcepub fn welcome_screen_app_id() -> ApplicationId
pub fn welcome_screen_app_id() -> ApplicationId
App ID used as a marker to display the welcome screen.
sourcepub fn new(
persistence: BlueprintPersistence,
setup_welcome_screen_blueprint: &dyn Fn(&mut EntityDb)
) -> StoreHub
pub fn new( persistence: BlueprintPersistence, setup_welcome_screen_blueprint: &dyn Fn(&mut EntityDb) ) -> StoreHub
sourcepub fn store_bundle(&self) -> &StoreBundle
pub fn store_bundle(&self) -> &StoreBundle
All the loaded recordings and blueprints.
sourcepub fn read_context(&mut self) -> Option<StoreContext<'_>>
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
.
sourcepub fn entity_db_mut(&mut self, store_id: &StoreId) -> &mut EntityDb
pub fn entity_db_mut(&mut self, store_id: &StoreId) -> &mut EntityDb
Mutable access to a EntityDb
by id
sourcepub fn insert_entity_db(&mut self, entity_db: EntityDb)
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.
pub fn remove(&mut self, store_id: &StoreId)
pub fn retain(&mut self, should_retain: impl FnMut(&EntityDb) -> bool)
sourcepub fn clear_recordings(&mut self)
pub fn clear_recordings(&mut self)
Remove all open recordings and applications, and go to the welcome page.
sourcepub fn set_active_app(&mut self, app_id: ApplicationId)
pub fn set_active_app(&mut self, app_id: ApplicationId)
Change the active ApplicationId
sourcepub fn close_app(&mut self, app_id: &ApplicationId)
pub fn close_app(&mut self, app_id: &ApplicationId)
Close this application and all its recordings.
pub fn active_app(&self) -> Option<&ApplicationId>
sourcepub fn active_recording_id(&self) -> Option<&StoreId>
pub fn active_recording_id(&self) -> Option<&StoreId>
Directly access the EntityDb
for the active recording.
sourcepub fn active_recording(&self) -> Option<&EntityDb>
pub fn active_recording(&self) -> Option<&EntityDb>
Directly access the EntityDb
for the active recording.
sourcepub fn active_caches(&self) -> Option<&Caches>
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.
sourcepub fn set_active_recording_id(&mut self, recording_id: StoreId)
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.
sourcepub fn set_activate_recording(&mut self, store_id: StoreId)
pub fn set_activate_recording(&mut self, store_id: StoreId)
Activate a recording by its StoreId
.
pub fn default_blueprint_id_for_app( &self, app_id: &ApplicationId ) -> Option<&StoreId>
pub fn default_blueprint_for_app( &self, app_id: &ApplicationId ) -> Option<&EntityDb>
sourcepub fn set_default_blueprint_for_app(
&mut self,
app_id: &ApplicationId,
blueprint_id: &StoreId
) -> Result<(), Error>
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
sourcepub fn clear_default_blueprint(&mut self)
pub fn clear_default_blueprint(&mut self)
Clear the current default blueprint
sourcepub fn active_blueprint_id(&self) -> Option<&StoreId>
pub fn active_blueprint_id(&self) -> Option<&StoreId>
What is the active blueprint for the active application?
pub fn active_blueprint_id_for_app( &self, app_id: &ApplicationId ) -> Option<&StoreId>
pub fn active_blueprint_for_app( &self, app_id: &ApplicationId ) -> Option<&EntityDb>
sourcepub fn set_cloned_blueprint_active_for_app(
&mut self,
app_id: &ApplicationId,
blueprint_id: &StoreId
) -> Result<(), Error>
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.
sourcepub fn is_active_blueprint(&self, blueprint_id: &StoreId) -> bool
pub fn is_active_blueprint(&self, blueprint_id: &StoreId) -> bool
Is the given blueprint id the active blueprint for any app id?
sourcepub fn clear_active_blueprint(&mut self)
pub fn clear_active_blueprint(&mut self)
Clear the currently active blueprint
sourcepub fn clear_all_cloned_blueprints(&mut self)
pub fn clear_all_cloned_blueprints(&mut self)
Cloned blueprints are the ones the user has edited, i.e. NOT sent from the SDK.
sourcepub fn purge_empty(&mut self)
pub fn purge_empty(&mut self)
Remove any empty EntityDb
s from the hub
sourcepub fn purge_fraction_of_ram(&mut self, fraction_to_purge: f32)
pub fn purge_fraction_of_ram(&mut self, fraction_to_purge: f32)
Call EntityDb::purge_fraction_of_ram
on every recording
sourcepub fn remove_recording_by_uri(&mut self, uri: &str)
pub fn remove_recording_by_uri(&mut self, uri: &str)
Remove any recordings with a network source pointing at this uri
.
pub fn gc_blueprints(&mut self)
sourcepub fn begin_frame(&mut self, renderer_active_frame_idx: u64)
pub fn begin_frame(&mut self, renderer_active_frame_idx: u64)
See re_viewer_context::Cache::begin_frame
.
sourcepub fn save_app_blueprints(&mut self) -> Result<(), Error>
pub fn save_app_blueprints(&mut self) -> Result<(), Error>
Persist any in-use blueprints to durable storage.
sourcepub fn stats(&self) -> StoreHubStats
pub fn stats(&self) -> StoreHubStats
Populate a StoreHubStats
based on the active app.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for StoreHub
impl !RefUnwindSafe for StoreHub
impl Send for StoreHub
impl Sync for StoreHub
impl Unpin for StoreHub
impl !UnwindSafe for StoreHub
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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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>
. 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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request