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

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 T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
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<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 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> MaybeBoxed<Box<T>> for T

source§

fn maybe_boxed(self) -> Box<T>

Convert
source§

impl<T> MaybeBoxed<T> for T

source§

fn maybe_boxed(self) -> T

Convert
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
source§

type Init = T

The type for initializers.
source§

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

Initializes a with the given initializer. Read more
source§

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

Dereferences the given pointer. Read more
source§

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

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

source§

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 T
where U: Into<T>,

source§

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>,

source§

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> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T