class documentation

class MemoryIOSystem: (source)

Implements interfaces: twisted.pair.tuntap._IInputOutputSystem

View In Hierarchy

An in-memory implementation of basic I/O primitives, useful in the context of unit testing as a drop-in replacement for parts of the os module.

Method __init__ Undocumented
Method close Discard the in-memory buffer and other in-memory state for the given file descriptor.
Method getTunnel Get the Tunnel object associated with the given TuntapPort.
Method ioctl Perform some configuration change to the in-memory state for the given file descriptor.
Method open A replacement for os.open. This initializes state in this MemoryIOSystem which will be reflected in the behavior of the other file descriptor-related methods (eg MemoryIOSystem.read, MemoryIOSystem.write...
Method read Try to read some bytes out of one of the in-memory buffers which may previously have been populated by write.
Method receiveUDP Get a socket-like object which can be used to receive a datagram sent from the given address.
Method registerSpecialDevice Specify a class which will be used to handle I/O to a device of a particular name.
Method sendUDP Write an ethernet frame containing an ip datagram containing a udp datagram containing the given payload, addressed to the given address, to a tunnel device previously opened on this I/O system.
Method write Try to add some bytes to one of the in-memory buffers to be accessed by a later read call.
Constant O_CLOEXEC No summary
Constant O_NONBLOCK No summary
Constant O_RDWR No summary
Instance Variable permissions No summary
Instance Variable _counter No summary
Instance Variable _devices No summary
Instance Variable _openFiles No summary
def __init__(self): (source)

Undocumented

def close(self, fd): (source)

Discard the in-memory buffer and other in-memory state for the given file descriptor.

See Also
os.close
def getTunnel(self, port): (source)

Get the Tunnel object associated with the given TuntapPort.

Parameters
portA TuntapPort previously initialized using this MemoryIOSystem.
Returns
TunnelThe tunnel object created by a prior use of open on this object on the tunnel special device file.
@_privileged
def ioctl(self, fd, request, args): (source)

Perform some configuration change to the in-memory state for the given file descriptor.

See Also
fcntl.ioctl
@_privileged
def open(self, name, flags, mode=None): (source)

A replacement for os.open. This initializes state in this MemoryIOSystem which will be reflected in the behavior of the other file descriptor-related methods (eg MemoryIOSystem.read, MemoryIOSystem.write, etc).

Parameters
name:bytesA string giving the name of the file to open.
flags:intThe flags with which to open the file.
mode:intThe mode with which to open the file.
Returns
intA file descriptor associated with the newly opened file description.
Raises
OSErrorWith ENOSYS if the file is not a recognized special device file.
def read(self, fd, limit): (source)

Try to read some bytes out of one of the in-memory buffers which may previously have been populated by write.

See Also
os.read
def receiveUDP(self, fileno, host, port): (source)

Get a socket-like object which can be used to receive a datagram sent from the given address.

Parameters
fileno:intA file descriptor representing a tunnel device which the datagram will be received via.
host:bytesThe IPv4 address to which the datagram was sent.
port:intThe UDP port number to which the datagram was sent. received.
Returns
A socket.socket-like object which can be used to receive the specified datagram.
def registerSpecialDevice(self, name, cls): (source)

Specify a class which will be used to handle I/O to a device of a particular name.

Parameters
name:bytesThe filesystem path name of the device.
clsA class (like Tunnel) to instantiated whenever this device is opened.
def sendUDP(self, datagram, address): (source)

Write an ethernet frame containing an ip datagram containing a udp datagram containing the given payload, addressed to the given address, to a tunnel device previously opened on this I/O system.

Parameters
datagram:bytesA UDP datagram payload to send.
address:tuple of (bytes, int)The destination to which to send the datagram.
Returns
tuple of (bytes, int)A two-tuple giving the address from which gives the address from which the datagram was sent.
def write(self, fd, data): (source)

Try to add some bytes to one of the in-memory buffers to be accessed by a later read call.

See Also
os.write
permissions: set[str] = (source)