Implements interfaces: twisted.internet.interfaces.IReactorFDSet

The CoreFoundation reactor.

You probably want to use this via the install API.

Method __init__ Undocumented
Method installWaker Override installWaker in order to use _WakerPlus; otherwise this should be exactly the same as the parent implementation.
Method addReader Implement IReactorFDSet.addReader.
Method addWriter Implement IReactorFDSet.addWriter.
Method removeReader Implement IReactorFDSet.removeReader.
Method removeWriter Implement IReactorFDSet.removeWriter.
Method removeAll Implement IReactorFDSet.removeAll.
Method getReaders Implement IReactorFDSet.getReaders.
Method getWriters Implement IReactorFDSet.getWriters.
Method mainLoop Run the runner (CFRunLoopRun or something that calls it), which runs the run loop until crash() is called.
Method callLater Implement IReactorTime.callLater.
Method stop Implement IReactorCore.stop.
Method crash Implement IReactorCore.crash
Method iterate Emulate the behavior of iterate() for things that want to call it, by letting the loop run for a little while and then scheduling a timed call to exit it.
Instance Variable _fdmap a dictionary, mapping an integer (a file descriptor) to a 4-tuple of:
  • source: a CFRunLoopSource; the source associated with this socket.
  • socket: a CFSocket wrapping the file descriptor.
  • descriptor: an IReadDescriptor and/or IWriteDescriptor provider.
  • read-write: a 2-list of booleans: respectively, whether this descriptor is currently registered for reading or registered for writing.
Instance Variable _idmap a dictionary, mapping the id() of an IReadDescriptor or IWriteDescriptor to a fd in _fdmap. Implemented in this manner so that we don't have to rely (even more) on the hashability of IReadDescriptor providers, and we know that they won't be collected since these are kept in sync with _fdmap. Necessary because the .fileno() of a file descriptor may change at will, so we need to be able to look up what its file descriptor used to be, so that we can look it up in _fdmap
Instance Variable _cfrunloop the CFRunLoop pyobjc object wrapped by this reactor.
Instance Variable _inCFLoop Is CFRunLoopRun currently running? (type: bool)
Instance Variable _currentSimulator if a CFTimer is currently scheduled with the CF run loop to run Twisted callLater calls, this is a reference to it. Otherwise, it is None
Method _socketCallback The socket callback issued by CFRunLoop. This will issue doRead or doWrite calls to the IReadDescriptor and IWriteDescriptor registered with the file descriptor that we are being notified of.
Method _watchFD Register a file descriptor with the CFRunLoop, or modify its state so that it's listening for both notifications (read and write) rather than just one; used to implement addReader and addWriter.
Method _flag2idx Convert a kCFSocket... constant to an index into the read/write state list (_READ or _WRITE) (the 4th element of the value of self._fdmap).
Method _unwatchFD Unregister a file descriptor with the CFRunLoop, or modify its state so that it's listening for only one notification (read or write) as opposed to both; used to implement removeReader and removeWriter.
Method _moveCallLaterSooner No summary
Method _scheduleSimulate Schedule a call to self.runUntilCurrent. This will cancel the currently scheduled call if it is already scheduled.
Method _stopNow Immediately stop the CFRunLoop (which must be running!).

Inherited from PosixReactorBase:

Method spawnProcess Spawn a process, with a process protocol.
Method listenUDP Connects a given DatagramProtocol to the given numeric UDP port.
Method listenMulticast Connects a given DatagramProtocol to the given numeric UDP port.
Method connectUNIX Connect a client protocol to a UNIX socket.
Method listenUNIX Listen on a UNIX socket.
Method listenUNIXDatagram Connects a given DatagramProtocol to the given path.
Method connectUNIXDatagram Connects a ConnectedDatagramProtocol instance to a path.
Method adoptStreamPort Create a new IListeningPort from an already-initialized socket.
Method adoptStreamConnection
Method adoptDatagramPort Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness.
Method listenTCP Connects a given protocol factory to the given numeric TCP/IP port.
Method connectTCP Connect a TCP client.
Method connectSSL Connect a client Protocol to a remote SSL socket.
Method listenSSL Connects a given protocol factory to the given numeric TCP/IP port. The connection is a SSL one, using contexts created by the context factory.
Instance Variable _childWaker None or a reference to the _SIGCHLDWaker which is used to properly notice child process termination.
Method _handleSignals Extend the basic signal handling logic to also support handling SIGCHLD to know when to try to reap child processes.
Method _uninstallHandler If a child waker was created and installed, uninstall it now.
Method _removeAll Remove all readers and writers, and list of removed IReadDescriptors and IWriteDescriptors.

Inherited from _SignalReactorMixin (via PosixReactorBase):

Method startRunning Extend the base implementation in order to remember whether signal handlers should be installed later.
Method run Undocumented
Instance Variable _installSignalHandlers A flag which indicates whether any signal handlers will be installed during startup. This includes handlers for SIGCHLD to monitor child processes, and SIGINT, SIGTERM, and SIGBREAK to stop the reactor. (type: bool)
Method _reallyStartRunning Extend the base implementation by also installing signal handlers, if self._installSignalHandlers is true.

Inherited from _DisconnectSelectableMixin (via PosixReactorBase):

Method _disconnectSelectable Utility function for disconnecting a selectable.

Inherited from ReactorBase (via PosixReactorBase):

Instance Variable running See IReactorCore.running
Method installResolver See IReactorPluggableResolver.
Method installNameResolver See IReactorPluggableNameResolver.
Method nameResolver Implementation of read-only IReactorPluggableNameResolver.nameResolver.
Method wakeUp Wake up the event loop.
Method doIteration Do one iteration over the readers and writers which have been added.
Method resolve Return a Deferred that will resolve a hostname.
Method sigInt Handle a SIGINT interrupt.
Method sigBreak Handle a SIGBREAK interrupt.
Method sigTerm Handle a SIGTERM interrupt.
Method disconnectAll Disconnect every reader, and writer in the system.
Method fireSystemEvent See twisted.internet.interfaces.IReactorCore.fireSystemEvent.
Method addSystemEventTrigger See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method removeSystemEventTrigger See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.
Method callWhenRunning See twisted.internet.interfaces.IReactorCore.callWhenRunning.
Method startRunning Method called when reactor starts: do some initialization and fire startup events.
Method getDelayedCalls No summary
Method timeout Determine the longest time the reactor may sleep (waiting on I/O notification, perhaps) before it must wake up to service a time-related event.
Method runUntilCurrent Run all pending timed calls.
Method callFromThread 0 See twisted.internet.interfaces.IReactorFromThreads.callFromThread.
Method getThreadPool See twisted.internet.interfaces.IReactorThreads.getThreadPool.
Method callInThread See twisted.internet.interfaces.IReactorInThreads.callInThread.
Method suggestThreadPoolSize See twisted.internet.interfaces.IReactorThreads.suggestThreadPoolSize.
Method callFromThread Cause a function to be executed by the reactor thread.
Instance Variable _stopped A flag which is true between paired calls to reactor.run and reactor.stop. This should be replaced with an explicit state machine. (type: bool)
Instance Variable _justStopped A flag which is true between the time reactor.stop is called and the time the shutdown system event is fired. This is used to determine whether that event should be fired after each iteration through the mainloop. This should be replaced with an explicit state machine. (type: bool)
Instance Variable _started A flag which is true from the time reactor.run is called until the time reactor.run returns. This is used to prevent calls to reactor.run on a running reactor. This should be replaced with an explicit state machine. (type: bool)
Instance Variable _registerAsIOThread A flag controlling whether the reactor will register the thread it is running in as the I/O thread when it starts. If True, registration will be done, otherwise it will not be.
Instance Variable _exitSignal See _ISupportsExitSignalCapturing._exitSignal
Method _reallyStartRunning Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method _cancelCallLater Undocumented
Method _insertNewDelayedCalls Undocumented
Method _checkProcessArgs Check for valid arguments and environment to spawnProcess.
Method _initThreads Undocumented
Method _initThreadPool Create the threadpool accessible with callFromThread.
Method _stopThreadPool No summary
_fdmap =
a dictionary, mapping an integer (a file descriptor) to a 4-tuple of:
  • source: a CFRunLoopSource; the source associated with this socket.
  • socket: a CFSocket wrapping the file descriptor.
  • descriptor: an IReadDescriptor and/or IWriteDescriptor provider.
  • read-write: a 2-list of booleans: respectively, whether this descriptor is currently registered for reading or registered for writing.
_idmap =
a dictionary, mapping the id() of an IReadDescriptor or IWriteDescriptor to a fd in _fdmap. Implemented in this manner so that we don't have to rely (even more) on the hashability of IReadDescriptor providers, and we know that they won't be collected since these are kept in sync with _fdmap. Necessary because the .fileno() of a file descriptor may change at will, so we need to be able to look up what its file descriptor used to be, so that we can look it up in _fdmap
_cfrunloop =
the CFRunLoop pyobjc object wrapped by this reactor.
_inCFLoop =
Is CFRunLoopRun currently running? (type: bool)
_currentSimulator =
if a CFTimer is currently scheduled with the CF run loop to run Twisted callLater calls, this is a reference to it. Otherwise, it is None
def __init__(self, runLoop=None, runner=None): (source)
def installWaker(self): (source)

Override installWaker in order to use _WakerPlus; otherwise this should be exactly the same as the parent implementation.

def _socketCallback(self, cfSocket, callbackType, ignoredAddress, ignoredData, context): (source)

The socket callback issued by CFRunLoop. This will issue doRead or doWrite calls to the IReadDescriptor and IWriteDescriptor registered with the file descriptor that we are being notified of.

ParameterscfSocketThe CFSocket which has got some activity.
callbackTypeThe type of activity that we are being notified of. Either kCFSocketReadCallBack or kCFSocketWriteCallBack.
ignoredAddressUnused, because this is not used for either of the callback types we register for.
ignoredDataUnused, because this is not used for either of the callback types we register for.
contextThe data associated with this callback by CFSocketCreateWithNative (in CFReactor._watchFD). A 2-tuple of (int, CFRunLoopSource).
def _watchFD(self, fd, descr, flag): (source)

Register a file descriptor with the CFRunLoop, or modify its state so that it's listening for both notifications (read and write) rather than just one; used to implement addReader and addWriter.

ParametersfdThe file descriptor. (type: int)
descrthe IReadDescriptor or IWriteDescriptor
flagthe flag to register for callbacks on, either kCFSocketReadCallBack or kCFSocketWriteCallBack
def _flag2idx(self, flag): (source)

Convert a kCFSocket... constant to an index into the read/write state list (_READ or _WRITE) (the 4th element of the value of self._fdmap).

ParametersflagkCFSocketReadCallBack or kCFSocketWriteCallBack
Returns_READ or _WRITE
def _unwatchFD(self, fd, descr, flag): (source)

Unregister a file descriptor with the CFRunLoop, or modify its state so that it's listening for only one notification (read or write) as opposed to both; used to implement removeReader and removeWriter.

Parametersfda file descriptor (type: int)
descran IReadDescriptor or IWriteDescriptor
flagkCFSocketWriteCallBack kCFSocketReadCallBack
def _moveCallLaterSooner(self, tple): (source)

Override PosixReactorBase's implementation of IDelayedCall.reset so that it will immediately reschedule. Normally _moveCallLaterSooner depends on the fact that runUntilCurrent is always run before the mainloop goes back to sleep, so this forces it to immediately recompute how long the loop needs to stay asleep.

def mainLoop(self): (source)

Run the runner (CFRunLoopRun or something that calls it), which runs the run loop until crash() is called.

def _scheduleSimulate(self, force=False): (source)

Schedule a call to self.runUntilCurrent. This will cancel the currently scheduled call if it is already scheduled.

ParametersforceEven if there are no timed calls, make sure that runUntilCurrent runs immediately (in a 0-seconds-from-now CFRunLoopTimer). This is necessary for calls which need to trigger behavior of runUntilCurrent other than running timed calls, such as draining the thread call queue or calling crash() when the appropriate flags are set. (type: bool)
def _stopNow(self): (source)

Immediately stop the CFRunLoop (which must be running!).

def iterate(self, delay=0): (source)

Emulate the behavior of iterate() for things that want to call it, by letting the loop run for a little while and then scheduling a timed call to exit it.

API Documentation for Twisted, generated by pydoctor at 2018-10-15 19:29:43.