Skip to main content

EvalContextPrivExt

Trait EvalContextPrivExt 

Source
trait EvalContextPrivExt<'tcx>: MiriInterpCxExt<'tcx> {
    // Provided methods
    fn block_for_accept(
        &mut self,
        socket: FileDescriptionRef<Socket>,
        address_ptr: Pointer,
        address_len_ptr: Pointer,
        is_client_sock_nonblock: bool,
        dest: MPlaceTy<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn try_non_block_accept(
        &mut self,
        socket: &FileDescriptionRef<Socket>,
        address_ptr: Pointer,
        address_len_ptr: Pointer,
        is_client_sock_nonblock: bool,
    ) -> InterpResult<'tcx, Result<i32, IoError>> { ... }
    fn block_for_send(
        &mut self,
        socket: FileDescriptionRef<Socket>,
        buffer_ptr: Pointer,
        length: usize,
        finish: DynMachineCallback<'tcx, Result<usize, IoError>>,
    ) -> InterpResult<'tcx> { ... }
    fn try_non_block_send(
        &mut self,
        socket: &FileDescriptionRef<Socket>,
        buffer_ptr: Pointer,
        length: usize,
    ) -> InterpResult<'tcx, Result<usize, IoError>> { ... }
    fn block_for_recv(
        &mut self,
        socket: FileDescriptionRef<Socket>,
        buffer_ptr: Pointer,
        length: usize,
        should_peek: bool,
        finish: DynMachineCallback<'tcx, Result<usize, IoError>>,
    ) -> InterpResult<'tcx> { ... }
    fn try_non_block_recv(
        &mut self,
        socket: &FileDescriptionRef<Socket>,
        buffer_ptr: Pointer,
        length: usize,
        should_peek: bool,
    ) -> InterpResult<'tcx, Result<usize, IoError>> { ... }
    fn ensure_connected(
        &mut self,
        socket: FileDescriptionRef<Socket>,
        should_wait: bool,
        foreign_name: &'static str,
        action: DynMachineCallback<'tcx, Result<(), ()>>,
    ) -> InterpResult<'tcx> { ... }
}

Provided Methods§

Source

fn block_for_accept( &mut self, socket: FileDescriptionRef<Socket>, address_ptr: Pointer, address_len_ptr: Pointer, is_client_sock_nonblock: bool, dest: MPlaceTy<'tcx>, ) -> InterpResult<'tcx>

Block the thread until there’s an incoming connection or an error occurred.

This recursively calls itself should the operation still block for some reason.

Note: This function is only safe to call when having previously ensured that the socket is in SocketState::Listening.

Source

fn try_non_block_accept( &mut self, socket: &FileDescriptionRef<Socket>, address_ptr: Pointer, address_len_ptr: Pointer, is_client_sock_nonblock: bool, ) -> InterpResult<'tcx, Result<i32, IoError>>

Attempt to accept an incoming connection on the listening socket in a non-blocking manner.

Note: This function is only safe to call when having previously ensured that the socket is in SocketState::Listening.

Source

fn block_for_send( &mut self, socket: FileDescriptionRef<Socket>, buffer_ptr: Pointer, length: usize, finish: DynMachineCallback<'tcx, Result<usize, IoError>>, ) -> InterpResult<'tcx>

Block the thread until we can send bytes into the connected socket or an error occurred.

This recursively calls itself should the operation still block for some reason.

Note: This function is only safe to call when having previously ensured that the socket is in SocketState::Connected.

Source

fn try_non_block_send( &mut self, socket: &FileDescriptionRef<Socket>, buffer_ptr: Pointer, length: usize, ) -> InterpResult<'tcx, Result<usize, IoError>>

Attempt to send bytes into the connected socket in a non-blocking manner.

Note: This function is only safe to call when having previously ensured that the socket is in SocketState::Connected.

Source

fn block_for_recv( &mut self, socket: FileDescriptionRef<Socket>, buffer_ptr: Pointer, length: usize, should_peek: bool, finish: DynMachineCallback<'tcx, Result<usize, IoError>>, ) -> InterpResult<'tcx>

Block the thread until we can receive bytes from the connected socket or an error occurred.

This recursively calls itself should the operation still block for some reason.

Note: This function is only safe to call when having previously ensured that the socket is in SocketState::Connected.

Source

fn try_non_block_recv( &mut self, socket: &FileDescriptionRef<Socket>, buffer_ptr: Pointer, length: usize, should_peek: bool, ) -> InterpResult<'tcx, Result<usize, IoError>>

Attempt to receive bytes from the connected socket in a non-blocking manner.

Note: This function is only safe to call when having previously ensured that the socket is in SocketState::Connected.

Source

fn ensure_connected( &mut self, socket: FileDescriptionRef<Socket>, should_wait: bool, foreign_name: &'static str, action: DynMachineCallback<'tcx, Result<(), ()>>, ) -> InterpResult<'tcx>

If the socket is currently neither in the SocketState::Connecting nor the SocketState::Connecting state, an ENOTCONN error is returned. When the callback function is called with Ok(_), then we’re guaranteed that the socket is in the SocketState::Connected state.

This function can optionally also block until either an error occurred or the socket reached the SocketState::Connected state.

Implementors§

Source§

impl<'tcx> EvalContextPrivExt<'tcx> for MiriInterpCx<'tcx>