class documentation

The CoreFoundation reactor.

You probably want to use this via the install API.

Method __init__ Undocumented
Method addReader Implement IReactorFDSet.addReader.
Method addWriter Implement IReactorFDSet.addWriter.
Method callLater Implement IReactorTime.callLater.
Method crash Implement IReactorCore.crash
Method getReaders Implement IReactorFDSet.getReaders.
Method getWriters Implement IReactorFDSet.getWriters.
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.
Method mainLoop Run the runner (CFRunLoopRun or something that calls it), which runs the run loop until crash() is called.
Method removeAll Implement IReactorFDSet.removeAll.
Method removeReader Implement IReactorFDSet.removeReader.
Method removeWriter Implement IReactorFDSet.removeWriter.
Method startRunning Start running the reactor, then kick off the timer that advances Twisted's clock to keep pace with CFRunLoop's.
Method stop Implement IReactorCore.stop.
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 _moveCallLaterSooner 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.
Method _scheduleSimulate Schedule a call to self.runUntilCurrent. This will cancel the currently scheduled call if it is already scheduled.
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 _stopSimulating If we have a CFRunLoopTimer registered with the CFRunLoop, invalidate it and set it to None.
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 _wakerFactory Undocumented
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.
Instance Variable _cfrunloop the CFRunLoop pyobjc object wrapped by this reactor.
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
Instance Variable _fdmap a dictionary, mapping an integer (a file descriptor) to a 4-tuple of:
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 ...
Instance Variable _inCFLoop Is CFRunLoopRun currently running?
Instance Variable _runner Undocumented
Instance Variable _started Undocumented

Inherited from PosixReactorBase:

Method adoptDatagramPort Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness.
Method adoptStreamConnection No summary
Method adoptStreamPort Create a new IListeningPort from an already-initialized socket.
Method connectSSL Connect a client Protocol to a remote SSL socket.
Method connectTCP Connect a TCP client.
Method connectUNIX Connect a client protocol to a UNIX socket.
Method connectUNIXDatagram Connects a ConnectedDatagramProtocol instance to a path.
Method installWaker Install a `waker' to allow threads and signals to wake up the IO thread.
Method listenMulticast Connects a given DatagramProtocol to the given numeric UDP port.
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.
Method listenTCP Connects a given protocol factory to the given numeric TCP/IP port.
Method listenUDP Connects a given DatagramProtocol to the given numeric UDP port.
Method listenUNIX Listen on a UNIX socket.
Method listenUNIXDatagram Connects a given DatagramProtocol to the given path.
Method spawnProcess Spawn a process, with a process protocol.
Instance Variable waker Undocumented
Method _removeAll Remove all readers and writers, and list of removed IReadDescriptors and IWriteDescriptors.
Method _signalsFactory Customize reactor signal handling to support child processes on POSIX platforms.
Class Variable _supportedAddressFamilies Undocumented
Instance Variable _childWaker None or a reference to the _SIGCHLDWaker which is used to properly notice child process termination.

Inherited from _DisconnectSelectableMixin (via PosixReactorBase):

Method _disconnectSelectable Utility function for disconnecting a selectable.

Inherited from ReactorBase (via PosixReactorBase, _DisconnectSelectableMixin):

Method addSystemEventTrigger See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method callFromThread See twisted.internet.interfaces.IReactorFromThreads.callFromThread.
Method callInThread See twisted.internet.interfaces.IReactorInThreads.callInThread.
Method callWhenRunning See twisted.internet.interfaces.IReactorCore.callWhenRunning.
Method disconnectAll Disconnect every reader, and writer in the system.
Method doIteration Do one iteration over the readers and writers which have been added.
Method fireSystemEvent See twisted.internet.interfaces.IReactorCore.fireSystemEvent.
Method getDelayedCalls See twisted.internet.interfaces.IReactorTime.getDelayedCalls
Method getThreadPool See twisted.internet.interfaces.IReactorThreads.getThreadPool.
Method removeSystemEventTrigger See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.
Method resolve Return a Deferred that will resolve a hostname.
Method run Fire 'startup' System Events, move the reactor to the 'running' state, then run the main loop until it is stopped with stop() or crash().
Method runUntilCurrent Run all pending timed calls.
Method sigBreak Handle a SIGBREAK interrupt.
Method sigInt Handle a SIGINT interrupt.
Method sigTerm Handle a SIGTERM interrupt.
Method suggestThreadPoolSize See twisted.internet.interfaces.IReactorThreads.suggestThreadPoolSize.
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 wakeUp Wake up the event loop.
Class Variable __name__ Undocumented
Class Variable installed Undocumented
Class Variable seconds Get the current time in seconds.
Instance Variable running See IReactorCore.running
Instance Variable threadCallQueue Undocumented
Instance Variable threadpool Undocumented
Instance Variable threadpoolShutdownID Undocumented
Instance Variable usingThreads Undocumented
Method _addInternalReader Add a read descriptor which is part of the implementation of the reactor itself.
Method _cancelCallLater Undocumented
Method _initThreadPool Create the threadpool accessible with callFromThread.
Method _initThreads Undocumented
Method _insertNewDelayedCalls Undocumented
Method _makeSignalHandling Get an appropriate signal handling object.
Method _reallyStartRunning Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method _removeInternalReader Remove a read descriptor which is part of the implementation of the reactor itself.
Method _stopThreadPool Stop the reactor threadpool. This method is only valid if there is currently a threadpool (created by _initThreadPool). It is not intended to be called directly; instead, it will be called by a shutdown trigger created in ...
Method _uninstallHandler Undocumented
Class Variable _lock Undocumented
Instance Variable _cancellations Undocumented
Instance Variable _eventTriggers Undocumented
Instance Variable _exitSignal See _ISupportsExitSignalCapturing._exitSignal
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
Instance Variable _internalReaders Undocumented
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...
Instance Variable _newTimedCalls Undocumented
Instance Variable _pendingTimedCalls Undocumented
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 _signals An object which knows how to install and uninstall the reactor's signal-handling behavior.
Instance Variable _startedBefore Undocumented
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.
Instance Variable _threadpoolStartupID Undocumented

Inherited from PluggableResolverMixin (via PosixReactorBase, _DisconnectSelectableMixin, ReactorBase):

Method installNameResolver See IReactorPluggableNameResolver.
Method installResolver See IReactorPluggableResolver.
Instance Variable resolver The installed IResolverSimple.
Property nameResolver Implementation of read-only IReactorPluggableNameResolver.nameResolver.
Instance Variable _nameResolver The installed IHostnameResolver.
def __init__(self, runLoop=None, runner=None): (source)
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.

def mainLoop(self): (source)

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

def startRunning(self, installSignalHandlers: bool = True): (source)

Start running the reactor, then kick off the timer that advances Twisted's clock to keep pace with CFRunLoop's.

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).

Parameters
flagkCFSocketReadCallBack or kCFSocketWriteCallBack
Returns
_READ or _WRITE
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 _scheduleSimulate(self): (source)

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

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.

Parameters
cfSocketThe 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 _stopSimulating(self): (source)

If we have a CFRunLoopTimer registered with the CFRunLoop, invalidate it and set it to None.

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.

Parameters
fd:inta file descriptor
descran IReadDescriptor or IWriteDescriptor
flagkCFSocketWriteCallBack kCFSocketReadCallBack
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.

Parameters
fd:intThe file descriptor.
descrthe IReadDescriptor or IWriteDescriptor
flagthe flag to register for callbacks on, either kCFSocketReadCallBack or kCFSocketWriteCallBack
_cfrunloop = (source)

the CFRunLoop pyobjc object wrapped by this reactor.

_currentSimulator: object|None = (source)

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

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.

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

_inCFLoop: bool = (source)

Is CFRunLoopRun currently running?

Undocumented