FdTable

Struct FdTable 

Source
pub struct FdTable { /* private fields */ }
Expand description

An FdTable is a table of file descriptors.

Implementations§

Source§

impl FdTable

Source

pub fn id(&self) -> FdTableId

Returns the FdTableId of the FdTable.

Source

pub fn fork(&self) -> FdTable

Returns new unshared FdTable that is a snapshot of the state of the FdTable.

Source

pub fn unshare(&self)

Ensures that this FdTable is not shared by any other FdTable instances.

Source

pub fn release(&self)

Releases the FdTable, closing any files opened exclusively by this table.

Source

pub fn exec(&self)

Trims close-on-exec file descriptors from the table.

Source

pub fn insert<L>( &self, locked: &mut Locked<L>, task: &Task, fd: FdNumber, file: FileHandle, ) -> Result<(), Errno>

Inserts a file descriptor into the table.

Source

pub fn insert_with_flags<L>( &self, locked: &mut Locked<L>, task: &Task, fd: FdNumber, file: FileHandle, flags: FdFlags, ) -> Result<(), Errno>

Inserts a file descriptor into the table with the specified flags.

Source

pub fn add_with_flags<L>( &self, locked: &mut Locked<L>, task: &Task, file: FileHandle, flags: FdFlags, ) -> Result<FdNumber, Errno>

Adds a file descriptor to the table.

The file descriptor will be assigned the next available number.

Returns the assigned file descriptor number.

This function is the most common way to add a file descriptor to the table.

Source

pub fn duplicate<L>( &self, locked: &mut Locked<L>, task: &Task, oldfd: FdNumber, target: TargetFdNumber, flags: FdFlags, ) -> Result<FdNumber, Errno>

Duplicates a file descriptor.

If target is TargetFdNumber::Minimum, a new FdNumber is allocated. Returns the new FdNumber.

Source

pub fn get_allowing_opath(&self, fd: FdNumber) -> Result<FileHandle, Errno>

Returns the file handle associated with the given file descriptor.

Returns the file handle even if the file was opened with O_PATH.

This operation is uncommon. Most clients should use get instead, which fails if the file was opened with O_PATH.

Source

pub fn get_allowing_opath_with_flags( &self, fd: FdNumber, ) -> Result<(FileHandle, FdFlags), Errno>

Returns the file handle and flags associated with the given file descriptor.

Returns the file handle even if the file was opened with O_PATH.

This operation is uncommon. Most clients should use get instead, which fails if the file was opened with O_PATH.

Source

pub fn get(&self, fd: FdNumber) -> Result<FileHandle, Errno>

Returns the file handle associated with the given file descriptor.

This operation fails if the file was opened with O_PATH.

Source

pub fn close(&self, fd: FdNumber) -> Result<(), Errno>

Closes the file descriptor associated with the given file descriptor.

This operation fails if the file descriptor is not valid.

Source

pub fn get_fd_flags_allowing_opath( &self, fd: FdNumber, ) -> Result<FdFlags, Errno>

Returns the flags associated with the given file descriptor.

Returns the flags even if the file was opened with O_PATH.

Source

pub fn set_fd_flags(&self, fd: FdNumber, flags: FdFlags) -> Result<(), Errno>

Sets the flags associated with the given file descriptor.

This operation fails if the file descriptor was opened with O_PATH or is not valid.

Source

pub fn set_fd_flags_allowing_opath( &self, fd: FdNumber, flags: FdFlags, ) -> Result<(), Errno>

Sets the flags associated with the given file descriptor.

This operation fails if the file descriptor is not valid.

Source

pub fn retain<F>(&self, predicate: F)
where F: Fn(FdNumber, &mut FdFlags) -> bool,

Retains only the FDs matching the given predicate.

The predicate is called with the FdNumber and a mutable reference to the FdFlags for each entry in the FdTable. If the predicate returns false, the entry is removed from the FdTable. Otherwise, the FdFlags are updated to the value modified by the predicate.

Source

pub fn get_all_fds(&self) -> Vec<FdNumber>

Returns a vector of all current file descriptors in the table.

Source

pub fn remap<F: Fn(&FileHandle) -> Option<FileHandle>>(&self, predicate: F)

Executes predicate(file) => maybe_replacement on every non-empty table entry.

Replaces file with replacement_file in the table when maybe_replacement == Some(replacement_file).

Trait Implementations§

Source§

impl Clone for FdTable

Source§

fn clone(&self) -> Self

Returns a duplicate 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 Debug for FdTable

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for FdTable

Source§

fn default() -> FdTable

Returns the “default value” for a type. 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> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn type_name(&self) -> &'static str

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _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, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _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> InstanceFromServiceTransport<T> for T

§

fn from_service_transport(handle: T) -> T

Converts the given service transport handle of type T to [Self]
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, U> Into32<U> for T
where U: MultiArchFrom<T>,

Source§

fn into_32(self) -> U

Source§

impl<T, U> Into64<U> for T
where U: MultiArchFrom<T>,

Source§

fn into_64(self) -> U

Source§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

Source§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
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
§

impl<T, U> IntoExt<U> for T
where U: FromExt<T>,

§

fn into_ext(self) -> U

Performs the conversion.
Source§

impl<T, U> IntoFidl<U> for T
where U: FromFidl<T>,

Source§

fn into_fidl(self) -> U

Source§

impl<T, U> MultiArchFrom<T> for U
where U: From<T>,

Source§

fn from_64(value: T) -> U

Source§

fn from_32(value: T) -> U

§

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

impl<T, U> TryIntoExt<U> for T
where U: TryFromExt<T>,

§

type Error = <U as TryFromExt<T>>::Error

§

fn try_into_ext(self) -> Result<U, <T as TryIntoExt<U>>::Error>

Tries to perform the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<St> WithTag for St

§

fn tagged<T>(self, tag: T) -> Tagged<T, St>

Produce a new stream from this one which yields item tupled with a constant tag
Source§

impl<B, A> LockBefore<B> for A
where B: LockAfter<A>,

Source§

impl<B, A> LockEqualOrBefore<B> for A
where A: LockBefore<B>,

§

impl<E> RunsTransport<Mpsc> for E

§

impl<E> RunsTransport<Mpsc> for E
where E: RunsTransport<Mpsc>,