# ``twisted`.`internet`.`_glibbase`.`GlibReactorBase``

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 | `addReader` | Add a `FileDescriptor` for monitoring of data available to read.
Method | `addWriter` | Add a `FileDescriptor` for monitoring ability to write data.
Method | `callLater` | Schedule a `DelayedCall`.
Method | `crash` | Crash the reactor.
Method | `getReaders` | Retrieve the list of current `FileDescriptor` monitored for reading.
Method | `getWriters` | 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 | `removeAll` | Remove monitoring for all registered `FileDescriptor`s.
Method | `removeReader` | Stop monitoring the given `FileDescriptor` for reading.
Method | `removeWriter` | Stop monitoring the given `FileDescriptor` for writing.
Method | `run` | Run the reactor.
Method | `stop` | Stop the reactor.
Instance Variable | `context` | Undocumented
Instance Variable | `loop` | Undocumented
Method | `_add` | No summary
Method | `_handleSignals` | Extend the basic signal handling logic to also support handling SIGCHLD to know when to try to reap child processes.
Method | `_ioEventCallback` | 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 | `adoptDatagramPort` | Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness.
Method | `adoptStreamConnection` |
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 `IReadDescriptor`s and `IWriteDescriptor`s.
Method | `_uninstallHandler` | If a child waker was created and installed, uninstall it now.
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 `_SignalReactorMixin` (via `PosixReactorBase`):

Method | `mainLoop` | Undocumented
Method | `startRunning` | Extend the base implementation in order to remember whether signal handlers should be installed later.
Method | `_reallyStartRunning` | Extend the base implementation by also installing signal handlers, if `self._installSignalHandlers` is true.
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.

Inherited from `_DisconnectSelectableMixin` (via `PosixReactorBase`):

Method | `_disconnectSelectable` | Utility function for disconnecting a selectable.

Inherited from `ReactorBase` (via `PosixReactorBase`):

Method | `addSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method | `callFromThread` | Cause a function to be executed by the reactor thread.
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 | `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 | `startRunning` | Method called when reactor starts: do some initialization and fire startup events.
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 | `_cancelCallLater` | Undocumented
Method | `_initThreadPool` | Create the threadpool accessible with callFromThread.
Method | `_initThreads` | Undocumented
Method | `_insertNewDelayedCalls` | Undocumented
Method | `_moveCallLaterSooner` | Undocumented
Method | `_reallyStartRunning` | Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method | `_stopThreadPool` | No summary
Class Variable | `_lock` | Undocumented
Instance Variable | `_cancellations` | Undocumented
Instance Variable | `_eventTriggers` | Undocumented
Instance Variable | `_exitSignal` | See `_ISupportsExitSignalCapturing._exitSignal`
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. This should be replaced with an explicit state machine.
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 | `_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 | `_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`, `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`.

Inherited from `_PollLikeMixin`:

Method | `_doReadOrWrite` | 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)
overrides `twisted.internet.base.ReactorBase.__init__`
overridden in `twisted.internet.gireactor.GIReactor`, `twisted.internet.gtk2reactor.Gtk2Reactor`

Undocumented

def addReader(self, reader): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.addReader`
Add a `FileDescriptor` for monitoring of data available to read.
def addWriter(self, writer): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.addWriter`
Add a `FileDescriptor` for monitoring ability to write data.
def callLater(self, *args, **kwargs): (source)
from `twisted.internet.interfaces.IReactorTime`
overrides `twisted.internet.base.ReactorBase.callLater`
Schedule a `DelayedCall`.
def crash(self): (source)
from `twisted.internet.interfaces.IReactorCore`
overrides `twisted.internet.base.ReactorBase.crash`
Crash the reactor.
def getReaders(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.getReaders`
Retrieve the list of current `FileDescriptor` monitored for reading.
def getWriters(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.getWriters`
Retrieve the list of current `FileDescriptor` monitored for writing.
def input_add(self, source, condition, callback): (source)

Undocumented

def iterate(self, delay=0): (source)
from `twisted.internet.interfaces.IReactorCore`
overrides `twisted.internet.base.ReactorBase.iterate`

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

This is not used for actual reactor runs.

def removeAll(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeAll`
Remove monitoring for all registered `FileDescriptor`s.
def removeReader(self, reader): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeReader`
Stop monitoring the given `FileDescriptor` for reading.
def removeWriter(self, writer): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeWriter`
Stop monitoring the given `FileDescriptor` for writing.
def run(self, installSignalHandlers=True): (source)
from `twisted.internet.interfaces.IReactorCore`
overrides `twisted.internet.base._SignalReactorMixin.run`
Run the reactor.
def stop(self): (source)
from `twisted.internet.interfaces.IReactorCore`
overrides `twisted.internet.base.ReactorBase.stop`
Stop the reactor.
context = (source)

Undocumented

loop = (source)

Undocumented

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)
overrides `twisted.internet.posixbase.PosixReactorBase._handleSignals`
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)
overridden in `twisted.internet.gireactor.GIReactor`

Undocumented

_glib = (source)

Undocumented

_gtk = (source)

Undocumented

_iteration = (source)

Undocumented

_pending = (source)

Undocumented

_reads: `set` = (source)
A set of `FileDescriptor` instances currently monitored for reading.
_run = (source)
overridden in `twisted.internet.gireactor.GIReactor`

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: `set` = (source)
A set of `FileDescriptor` instances currently monitored for writing.