pub enum NamespaceControllerRequest {
    Detach {
        responder: NamespaceControllerDetachResponder,
    },
    PushChanges {
        changes: Vec<Change>,
        responder: NamespaceControllerPushChangesResponder,
    },
    Commit {
        payload: CommitOptions,
        responder: NamespaceControllerCommitResponder,
    },
}
Expand description

Provides mutable access to an isolated view of packet filtering configuration.

The handle to this protocol encodes the lifetime of the contained state. Closing the client end will remove filtering state owned by this controller, unless the client has previously called Detach.

Note that pending changes, on the other hand, will always be flushed when the client end of this protocol is closed (even if the client has detached).

Variants§

§

Detach

Detaches the client end from the controller’s lifetime.

After calling Detach, closing this client end no longer causes the filtering state owned by the controller to be removed. The key returned by the method can be used once by a client to reconnect to a detached controller. This allows clients to ensure the filtering state they install is resilient to client-side crashes and disconnections. (Note, however, that closing the client end of the channel will flush any pending changes that have been pushed but not yet committed.)

Detach can be called multiple times; the key returned by the most recent call is valid to reconnect to the controller. Calling Detach will always return a new key and invalidate any previous keys.

Note that, once a client has called Detach on a controller, the controller remains detached even after a reconnection. This means that, for example, if a client detached, closed the client end, reconnected, and then closed the client end again, the filtering state owned by the controller would not be removed. After reconnection, the only reason a client would call Detach is to be able to reconnect again in the future, given the key is invalidated after use.

§

PushChanges

Append a set of changes to a pending transactional update to the filtering configuration.

To apply these changes, a client must call Commit.

§

Commit

Apply all pending changes. The set of changes will either be applied in its entirety or, in case of an error, not applied at all.

Implementations§

Trait Implementations§

source§

impl Debug for NamespaceControllerRequest

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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> 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
§

impl<T> Encode<Ambiguous1> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T> Encode<Ambiguous2> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
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.

§

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

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