Skip to main content

IOCompletionPort

Struct IOCompletionPort 

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

This module provides a safe and idiomatic Rust interface over the IOCompletionPort handle and associated Windows API functions. This struct represents an I/O completion port, which is an object used in asynchronous I/O operations on Windows.

Implementations§

Source§

impl IOCompletionPort

Source

pub fn new( file_handle: &FileHandle, existing_completion_port: Option<&IOCompletionPort>, completion_key: ULONG_PTR, number_of_concurrent_threads: DWORD, ) -> Result<Self>

Create a new IOCompletionPort. This function wraps the Windows CreateIoCompletionPort function, providing error handling and automatic resource management.

§Arguments
  • file_handle - A reference to a FileHandle to associate with the IOCompletionPort.
  • existing_completion_port - An optional reference to an existing IOCompletionPort. If provided, the new IOCompletionPort will be associated with it.
  • completion_key - The completion key associated with the file handle.
  • number_of_concurrent_threads - The maximum number of threads that the operating system can allow to concurrently process I/O completion packets for the I/O completion port.
§Return

Returns a Result with the new IOCompletionPort if successful, or an io::Error if the function fails.

Source

pub fn mutex_guarded_handle(&self) -> Result<MutexGuard<'_, HANDLE>>

Trait Implementations§

Source§

impl Default for IOCompletionPort

Source§

fn default() -> Self

Create a default IOCompletionPort, whose handle is set to INVALID_HANDLE_VALUE. Returns a new IOCompletionPort with handle set to INVALID_HANDLE_VALUE.

Source§

impl Drop for IOCompletionPort

Source§

fn drop(&mut self)

Drop method for IOCompletionPort. This wraps the Windows CloseHandle function, providing automatic resource cleanup when the IOCompletionPort is dropped. If an error occurs while dropping, it is logged and the drop continues. This is because panicking in Drop can cause unwinding issues.

Source§

impl Send for IOCompletionPort

Source§

impl Sync for IOCompletionPort

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

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.

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> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more