Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Unified Diff: third_party/twisted_8_1/twisted/internet/gtkreactor.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/internet/gtkreactor.py
diff --git a/third_party/twisted_8_1/twisted/internet/gtkreactor.py b/third_party/twisted_8_1/twisted/internet/gtkreactor.py
deleted file mode 100644
index 6c19fe49389bc8041529e6d1b5b6c8c4057970ef..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/internet/gtkreactor.py
+++ /dev/null
@@ -1,233 +0,0 @@
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-This module provides support for Twisted to interact with the PyGTK mainloop.
-
-In order to use this support, simply do the following::
-
- | from twisted.internet import gtkreactor
- | gtkreactor.install()
-
-Then use twisted.internet APIs as usual. The other methods here are not
-intended to be called directly.
-
-Maintainer: U{Itamar Shtull-Trauring<mailto:twisted@itamarst.org>}
-"""
-
-import sys
-
-# System Imports
-try:
- import pygtk
- pygtk.require('1.2')
-except ImportError, AttributeError:
- pass # maybe we're using pygtk before this hack existed.
-import gtk
-
-from zope.interface import implements
-
-# Twisted Imports
-from twisted.python import log, runtime
-from twisted.internet.interfaces import IReactorFDSet
-
-# Sibling Imports
-from twisted.internet import posixbase, selectreactor
-
-
-class GtkReactor(posixbase.PosixReactorBase):
- """
- GTK+ event loop reactor.
-
- @ivar _reads: A dictionary mapping L{FileDescriptor} instances to gtk INPUT_READ
- watch handles.
-
- @ivar _writes: A dictionary mapping L{FileDescriptor} instances to gtk
- INTPUT_WRITE watch handles.
-
- @ivar _simtag: A gtk timeout handle for the next L{simulate} call.
- """
- implements(IReactorFDSet)
-
- def __init__(self):
- """
- Initialize the file descriptor tracking dictionaries and the base
- class.
- """
- self._simtag = None
- self._reads = {}
- self._writes = {}
- posixbase.PosixReactorBase.__init__(self)
-
-
- def addReader(self, reader):
- if reader not in self._reads:
- self._reads[reader] = gtk.input_add(reader, gtk.GDK.INPUT_READ, self.callback)
-
- def addWriter(self, writer):
- if writer not in self._writes:
- self._writes[writer] = gtk.input_add(writer, gtk.GDK.INPUT_WRITE, self.callback)
-
-
- def getReaders(self):
- return self._reads.keys()
-
-
- def getWriters(self):
- return self._writes.keys()
-
-
- def removeAll(self):
- return self._removeAll(self._reads, self._writes)
-
- def removeReader(self, reader):
- if reader in self._reads:
- gtk.input_remove(self._reads[reader])
- del self._reads[reader]
-
- def removeWriter(self, writer):
- if writer in self._writes:
- gtk.input_remove(self._writes[writer])
- del self._writes[writer]
-
- doIterationTimer = None
-
- def doIterationTimeout(self, *args):
- self.doIterationTimer = None
- return 0 # auto-remove
- def doIteration(self, delay):
- # flush some pending events, return if there was something to do
- # don't use the usual "while gtk.events_pending(): mainiteration()"
- # idiom because lots of IO (in particular test_tcp's
- # ProperlyCloseFilesTestCase) can keep us from ever exiting.
- log.msg(channel='system', event='iteration', reactor=self)
- if gtk.events_pending():
- gtk.mainiteration(0)
- return
- # nothing to do, must delay
- if delay == 0:
- return # shouldn't delay, so just return
- self.doIterationTimer = gtk.timeout_add(int(delay * 1000),
- self.doIterationTimeout)
- # This will either wake up from IO or from a timeout.
- gtk.mainiteration(1) # block
- # note: with the .simulate timer below, delays > 0.1 will always be
- # woken up by the .simulate timer
- if self.doIterationTimer:
- # if woken by IO, need to cancel the timer
- gtk.timeout_remove(self.doIterationTimer)
- self.doIterationTimer = None
-
- def crash(self):
- posixbase.PosixReactorBase.crash(self)
- gtk.mainquit()
-
- def run(self, installSignalHandlers=1):
- self.startRunning(installSignalHandlers=installSignalHandlers)
- gtk.timeout_add(0, self.simulate)
- gtk.mainloop()
-
- def _readAndWrite(self, source, condition):
- # note: gtk-1.2's gtk_input_add presents an API in terms of gdk
- # constants like INPUT_READ and INPUT_WRITE. Internally, it will add
- # POLL_HUP and POLL_ERR to the poll() events, but if they happen it
- # will turn them back into INPUT_READ and INPUT_WRITE. gdkevents.c
- # maps IN/HUP/ERR to INPUT_READ, and OUT/ERR to INPUT_WRITE. This
- # means there is no immediate way to detect a disconnected socket.
-
- # The g_io_add_watch() API is more suited to this task. I don't think
- # pygtk exposes it, though.
- why = None
- didRead = None
- try:
- if condition & gtk.GDK.INPUT_READ:
- why = source.doRead()
- didRead = source.doRead
- if not why and condition & gtk.GDK.INPUT_WRITE:
- # if doRead caused connectionLost, don't call doWrite
- # if doRead is doWrite, don't call it again.
- if not source.disconnected and source.doWrite != didRead:
- why = source.doWrite()
- didRead = source.doWrite # if failed it was in write
- except:
- why = sys.exc_info()[1]
- log.msg('Error In %s' % source)
- log.deferr()
-
- if why:
- self._disconnectSelectable(source, why, didRead == source.doRead)
-
- def callback(self, source, condition):
- log.callWithLogger(source, self._readAndWrite, source, condition)
- self.simulate() # fire Twisted timers
- return 1 # 1=don't auto-remove the source
-
- def simulate(self):
- """Run simulation loops and reschedule callbacks.
- """
- if self._simtag is not None:
- gtk.timeout_remove(self._simtag)
- self.runUntilCurrent()
- timeout = min(self.timeout(), 0.1)
- if timeout is None:
- timeout = 0.1
- # Quoth someone other than me, "grumble", yet I know not why. Try to be
- # more specific in your complaints, guys. -exarkun
- self._simtag = gtk.timeout_add(int(timeout * 1010), self.simulate)
-
-
-
-class PortableGtkReactor(selectreactor.SelectReactor):
- """Reactor that works on Windows.
-
- input_add is not supported on GTK+ for Win32, apparently.
-
- @ivar _simtag: A gtk timeout handle for the next L{simulate} call.
- """
- _simtag = None
-
-
- def crash(self):
- selectreactor.SelectReactor.crash(self)
- gtk.mainquit()
-
- def run(self, installSignalHandlers=1):
- self.startRunning(installSignalHandlers=installSignalHandlers)
- self.simulate()
- gtk.mainloop()
-
- def simulate(self):
- """Run simulation loops and reschedule callbacks.
- """
- if self._simtag is not None:
- gtk.timeout_remove(self._simtag)
- self.iterate()
- timeout = min(self.timeout(), 0.1)
- if timeout is None:
- timeout = 0.1
-
- # See comment for identical line in GtkReactor.simulate.
- self._simtag = gtk.timeout_add((timeout * 1010), self.simulate)
-
-
-
-def install():
- """Configure the twisted mainloop to be run inside the gtk mainloop.
- """
- reactor = GtkReactor()
- from twisted.internet.main import installReactor
- installReactor(reactor)
- return reactor
-
-def portableInstall():
- """Configure the twisted mainloop to be run inside the gtk mainloop.
- """
- reactor = PortableGtkReactor()
- from twisted.internet.main import installReactor
- installReactor(reactor)
- return reactor
-
-if runtime.platform.getType() != 'posix':
- install = portableInstall
-
-__all__ = ['install']
« no previous file with comments | « third_party/twisted_8_1/twisted/internet/gtk2reactor.py ('k') | third_party/twisted_8_1/twisted/internet/interfaces.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698