compio_driver

Trait OpCode

source
pub trait OpCode {
    // Required method
    unsafe fn operate(
        self: Pin<&mut Self>,
        optr: *mut OVERLAPPED,
    ) -> Poll<Result<usize>>;

    // Provided methods
    fn op_type(&self) -> OpType { ... }
    unsafe fn cancel(self: Pin<&mut Self>, optr: *mut OVERLAPPED) -> Result<()> { ... }
}
Expand description

Abstraction of IOCP operations.

Required Methods§

source

unsafe fn operate( self: Pin<&mut Self>, optr: *mut OVERLAPPED, ) -> Poll<Result<usize>>

Perform Windows API call with given pointer to overlapped struct.

It is always safe to cast optr to a pointer to Overlapped<Self>.

§Safety
  • self must be alive until the operation completes.
  • Should not use [Overlapped::op].

Provided Methods§

source

fn op_type(&self) -> OpType

Determines that the operation is really overlapped defined by Windows API. If not, the driver will try to operate it in another thread.

source

unsafe fn cancel(self: Pin<&mut Self>, optr: *mut OVERLAPPED) -> Result<()>

Cancel the async IO operation.

Usually it calls CancelIoEx.

§Safety
  • Should not use [Overlapped::op].

Implementors§

source§

impl OpCode for CloseFile

source§

impl OpCode for CloseSocket

source§

impl<D: Send + 'static, F: FnOnce() -> BufResult<usize, D> + Send + Sync + 'static> OpCode for Asyncify<F, D>

source§

impl<S: AsRawFd> OpCode for Accept<S>

source§

impl<S: AsRawFd> OpCode for Connect<S>

source§

impl<S: AsRawFd> OpCode for ConnectNamedPipe<S>

source§

impl<S: AsRawFd> OpCode for ShutdownSocket<S>

source§

impl<S: AsRawFd> OpCode for Sync<S>

source§

impl<T: IoBuf, S: AsRawFd> OpCode for Send<T, S>

source§

impl<T: IoBuf, S: AsRawFd> OpCode for SendTo<T, S>

source§

impl<T: IoBuf, S: AsRawFd> OpCode for WriteAt<T, S>

source§

impl<T: IoBufMut, S: AsRawFd> OpCode for ReadAt<T, S>

source§

impl<T: IoBufMut, S: AsRawFd> OpCode for Recv<T, S>

source§

impl<T: IoBufMut, S: AsRawFd> OpCode for RecvFrom<T, S>

source§

impl<T: IoVectoredBuf, C: IoBuf, S: AsRawFd> OpCode for SendMsg<T, C, S>

source§

impl<T: IoVectoredBuf, S: AsRawFd> OpCode for SendToVectored<T, S>

source§

impl<T: IoVectoredBuf, S: AsRawFd> OpCode for SendVectored<T, S>

source§

impl<T: IoVectoredBufMut, C: IoBufMut, S: AsRawFd> OpCode for RecvMsg<T, C, S>

source§

impl<T: IoVectoredBufMut, S: AsRawFd> OpCode for RecvFromVectored<T, S>

source§

impl<T: IoVectoredBufMut, S: AsRawFd> OpCode for RecvVectored<T, S>