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 No summary
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.
Class Variable O_CLOEXEC
Class Variable O_NONBLOCK
Class Variable O_RDWR
Instance Variable permissions
Instance Variable _counter
Instance Variable _devices
Instance Variable _openFiles
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)
_counter: int = (source)
_devices: dict = (source)
_openFiles: dict = (source)