Struct base::id::PipelineNamespace
source · pub struct PipelineNamespace {
id: PipelineNamespaceId,
index: u32,
}
Expand description
Each pipeline ID needs to be unique. However, it also needs to be possible to generate the pipeline ID from an iframe element (this simplifies a lot of other code that makes use of pipeline IDs).
To achieve this, each pipeline index belongs to a particular namespace. There is a namespace for the constellation thread, and also one for every script thread.
A namespace can be installed for any other thread in a process where an pipeline-installer has been initialized.
This allows pipeline IDs to be generated by any of those threads without conflicting with pipeline IDs created by other script threads or the constellation. The constellation is the only code that is responsible for creating new namespaces. This ensures that namespaces are always unique, even when using multi-process mode.
It may help conceptually to think of the namespace ID as an identifier for the thread that created this pipeline ID - however this is really an implementation detail so shouldn’t be relied upon in code logic. It’s best to think of the pipeline ID as a simple unique identifier that doesn’t convey any more information.
Fields§
§id: PipelineNamespaceId
§index: u32
Implementations§
source§impl PipelineNamespace
impl PipelineNamespace
sourcepub fn install(namespace_id: PipelineNamespaceId)
pub fn install(namespace_id: PipelineNamespaceId)
Install a namespace for a given Id.
sourcepub fn set_installer_sender(sender: IpcSender<PipelineNamespaceRequest>)
pub fn set_installer_sender(sender: IpcSender<PipelineNamespaceRequest>)
Setup the pipeline-namespace-installer, by providing it with a sender to the constellation. Idempotent in single-process mode.
sourcepub fn auto_install()
pub fn auto_install()
Install a namespace in the current thread, without requiring having a namespace Id ready. Panics if called more than once per thread.
fn next_index(&mut self) -> NonZeroU32
fn next_pipeline_id(&mut self) -> PipelineId
fn next_browsing_context_id(&mut self) -> BrowsingContextId
fn next_history_state_id(&mut self) -> HistoryStateId
fn next_message_port_id(&mut self) -> MessagePortId
fn next_message_port_router_id(&mut self) -> MessagePortRouterId
fn next_broadcast_channel_router_id(&mut self) -> BroadcastChannelRouterId
fn next_service_worker_id(&mut self) -> ServiceWorkerId
fn next_service_worker_registration_id(&mut self) -> ServiceWorkerRegistrationId
fn next_blob_id(&mut self) -> BlobId
Trait Implementations§
source§impl Clone for PipelineNamespace
impl Clone for PipelineNamespace
source§fn clone(&self) -> PipelineNamespace
fn clone(&self) -> PipelineNamespace
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more