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

source

pub fn install(namespace_id: PipelineNamespaceId)

Install a namespace for a given Id.

source

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.

source

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.

source

fn next_index(&mut self) -> NonZeroU32

source

fn next_pipeline_id(&mut self) -> PipelineId

source

fn next_browsing_context_id(&mut self) -> BrowsingContextId

source

fn next_history_state_id(&mut self) -> HistoryStateId

source

fn next_message_port_id(&mut self) -> MessagePortId

source

fn next_message_port_router_id(&mut self) -> MessagePortRouterId

source

fn next_broadcast_channel_router_id(&mut self) -> BroadcastChannelRouterId

source

fn next_service_worker_id(&mut self) -> ServiceWorkerId

source

fn next_service_worker_registration_id(&mut self) -> ServiceWorkerRegistrationId

source

fn next_blob_id(&mut self) -> BlobId

Trait Implementations§

source§

impl Clone for PipelineNamespace

source§

fn clone(&self) -> PipelineNamespace

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Copy for PipelineNamespace

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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<V, T> VZip<V> for Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V