class documentation

class GlibReactorBase(posixbase.PosixReactorBase, posixbase._PollLikeMixin): (source)

Known subclasses: twisted.internet.gireactor.GIReactor, twisted.internet.gtk2reactor.Gtk2Reactor

Implements interfaces: twisted.internet.interfaces.IReactorFDSet

View In Hierarchy

Base class for GObject event loop reactors.

Notification for I/O events (reads and writes on file descriptors) is done by the gobject-based event loop. File descriptors are registered with gobject with the appropriate flags for read/write/disconnect notification.

Time-based events, the results of callLater and callFromThread, are handled differently. Rather than registering each event with gobject, a single gobject timeout is registered for the earliest scheduled event, the output of reactor.timeout(). For example, if there are timeouts in 1, 2 and 3.4 seconds, a single timeout is registered for 1 second in the future. When this timeout is hit, _simulate is called, which calls the appropriate Twisted-level handlers, and a new timeout is added to gobject by the _reschedule method.

To handle callFromThread events, we use a custom waker that calls _simulate whenever it wakes up.

Method __init__ Undocumented
Method add​Reader Add a FileDescriptor for monitoring of data available to read.
Method add​Writer Add a FileDescriptor for monitoring ability to write data.
Method call​Later Schedule a DelayedCall.
Method crash Crash the reactor.
Method get​Readers Retrieve the list of current FileDescriptor monitored for reading.
Method get​Writers Retrieve the list of current FileDescriptor monitored for writing.
Method input​_add Undocumented
Method iterate One iteration of the event loop, for trial's use.
Method remove​All Remove monitoring for all registered FileDescriptors.
Method remove​Reader Stop monitoring the given FileDescriptor for reading.
Method remove​Writer Stop monitoring the given FileDescriptor for writing.
Method run Run the reactor.
Method stop Stop the reactor.
Method _add No summary
Method _handle​Signals Extend the basic signal handling logic to also support handling SIGCHLD to know when to try to reap child processes.
Method _io​Event​Callback Called by event loop when an I/O event occurs.
Method _remove Remove monitoring the given FileDescriptor for either reading or writing. If it's still monitored for the other operation, we re-register the FileDescriptor for only that operation.
Method _reschedule Schedule a glib timeout for _simulate.
Method _simulate Run timers, and then reschedule glib timeout for next scheduled event.
Instance Variable _crash Undocumented
Instance Variable _glib Undocumented
Instance Variable _gtk Undocumented
Instance Variable _iteration Undocumented
Instance Variable _pending Undocumented
Instance Variable _reads A set of FileDescriptor instances currently monitored for reading.
Instance Variable _run Undocumented
Instance Variable _simtag A GSource handle for the next simulate call.
Instance Variable _source​_remove Undocumented
Instance Variable _sources A dictionary mapping FileDescriptor instances to GSource handles.
Instance Variable _timeout​_add Undocumented
Instance Variable _writes A set of FileDescriptor instances currently monitored for writing.

Inherited from PosixReactorBase:

Method adopt​Datagram​Port Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness.
Method adopt​Stream​Connection
Method adopt​Stream​Port Create a new IListeningPort from an already-initialized socket.
Method connect​SSL Connect a client Protocol to a remote SSL socket.
Method connect​TCP Connect a TCP client.
Method connect​UNIX Connect a client protocol to a UNIX socket.
Method connect​UNIXDatagram Connects a ConnectedDatagramProtocol instance to a path.
Method install​Waker Install a `waker' to allow threads and signals to wake up the IO thread.
Method listen​Multicast Connects a given DatagramProtocol to the given numeric UDP port.
Method listen​SSL 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 listen​TCP Connects a given protocol factory to the given numeric TCP/IP port.
Method listen​UDP Connects a given DatagramProtocol to the given numeric UDP port.
Method listen​UNIX Listen on a UNIX socket.
Method listen​UNIXDatagram Connects a given DatagramProtocol to the given path.
Method spawn​Process Spawn a process, with a process protocol.
Instance Variable waker Undocumented
Method _remove​All Remove all readers and writers, and list of removed IReadDescriptors and IWriteDescriptors.
Method _uninstall​Handler If a child waker was created and installed, uninstall it now.
Class Variable _supported​Address​Families Undocumented
Instance Variable _child​Waker None or a reference to the _SIGCHLDWaker which is used to properly notice child process termination.

Inherited from _SignalReactorMixin (via PosixReactorBase):

Method main​Loop Undocumented
Method start​Running Extend the base implementation in order to remember whether signal handlers should be installed later.
Method _really​Start​Running Extend the base implementation by also installing signal handlers, if self._installSignalHandlers is true.
Instance Variable _install​Signal​Handlers 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.

Inherited from _DisconnectSelectableMixin (via PosixReactorBase):

Method _disconnect​Selectable Utility function for disconnecting a selectable.

Inherited from ReactorBase (via PosixReactorBase):

Method add​System​Event​Trigger See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method call​From​Thread See twisted.internet.interfaces.IReactorFromThreads.callFromThread.
Method call​In​Thread See twisted.internet.interfaces.IReactorInThreads.callInThread.
Method call​When​Running See twisted.internet.interfaces.IReactorCore.callWhenRunning.
Method disconnect​All Disconnect every reader, and writer in the system.
Method do​Iteration Do one iteration over the readers and writers which have been added.
Method fire​System​Event See twisted.internet.interfaces.IReactorCore.fireSystemEvent.
Method get​Delayed​Calls No summary
Method get​Thread​Pool See twisted.internet.interfaces.IReactorThreads.getThreadPool.
Method remove​System​Event​Trigger See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.
Method resolve Return a Deferred that will resolve a hostname.
Method run​Until​Current Run all pending timed calls.
Method sig​Break Handle a SIGBREAK interrupt.
Method sig​Int Handle a SIGINT interrupt.
Method sig​Term Handle a SIGTERM interrupt.
Method start​Running Method called when reactor starts: do some initialization and fire startup events.
Method suggest​Thread​Pool​Size 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 wake​Up 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 thread​Call​Queue Undocumented
Instance Variable threadpool Undocumented
Instance Variable threadpool​Shutdown​ID Undocumented
Instance Variable using​Threads Undocumented
Method _cancel​Call​Later Undocumented
Method _check​Process​Args Check for valid arguments and environment to spawnProcess.
Method _init​Thread​Pool Create the threadpool accessible with callFromThread.
Method _init​Threads Undocumented
Method _insert​New​Delayed​Calls Undocumented
Method _move​Call​Later​Sooner Undocumented
Method _really​Start​Running Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method _stop​Thread​Pool No summary
Class Variable _lock Undocumented
Instance Variable _cancellations Undocumented
Instance Variable _event​Triggers Undocumented
Instance Variable _exit​Signal See _ISupportsExitSignalCapturing._exitSignal
Instance Variable _internal​Readers Undocumented
Instance Variable _just​Stopped 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.
Instance Variable _new​Timed​Calls Undocumented
Instance Variable _pending​Timed​Calls Undocumented
Instance Variable _register​As​IOThread 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 _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.
Instance Variable _started​Before 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 _threadpool​Startup​ID Undocumented

Inherited from PluggableResolverMixin (via PosixReactorBase, ReactorBase):

Method install​Name​Resolver See IReactorPluggableNameResolver.
Method install​Resolver See IReactorPluggableResolver.
Instance Variable resolver The installed IResolverSimple.
Property name​Resolver Implementation of read-only IReactorPluggableNameResolver.nameResolver.
Instance Variable _name​Resolver The installed IHostnameResolver.

Inherited from _PollLikeMixin:

Method _do​Read​Or​Write fd is available for read or write, do the work and raise errors if necessary.
def __init__(self, glib_module, gtk_module, useGtk=False): (source)
def addReader(self, reader): (source)
Add a FileDescriptor for monitoring of data available to read.
def addWriter(self, writer): (source)
def callLater(self, *args, **kwargs): (source)
def getReaders(self): (source)
Retrieve the list of current FileDescriptor monitored for reading.
def getWriters(self): (source)
Retrieve the list of current FileDescriptor monitored for writing.
def input_add(self, source, condition, callback): (source)

Undocumented

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

One iteration of the event loop, for trial's use.

This is not used for actual reactor runs.

def removeAll(self): (source)
def removeReader(self, reader): (source)
def removeWriter(self, writer): (source)
def run(self, installSignalHandlers=True): (source)
def _add(self, source, primary, other, primaryFlag, otherFlag): (source)
Add the given FileDescriptor for monitoring either for reading or writing. If the file is already monitored for the other operation, we delete the previous registration and re-register it for both reading and writing.
def _handleSignals(self): (source)
Extend the basic signal handling logic to also support handling SIGCHLD to know when to try to reap child processes.
def _ioEventCallback(self, source, condition): (source)
Called by event loop when an I/O event occurs.
def _remove(self, source, primary, other, flags): (source)
Remove monitoring the given FileDescriptor for either reading or writing. If it's still monitored for the other operation, we re-register the FileDescriptor for only that operation.
def _reschedule(self): (source)
Schedule a glib timeout for _simulate.
def _simulate(self): (source)
Run timers, and then reschedule glib timeout for next scheduled event.
_crash = (source)

Undocumented

_glib = (source)

Undocumented

_gtk = (source)

Undocumented

_iteration = (source)

Undocumented

_pending = (source)

Undocumented

_reads = (source)
A set of FileDescriptor instances currently monitored for reading.
_run = (source)

Undocumented

_simtag = (source)
A GSource handle for the next simulate call.
_source_remove = (source)

Undocumented

_sources: dict = (source)
A dictionary mapping FileDescriptor instances to GSource handles.
_timeout_add = (source)

Undocumented

_writes = (source)
A set of FileDescriptor instances currently monitored for writing.