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

Unified Diff: third_party/twisted_8_1/twisted/internet/cfreactor.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/cfreactor.py
diff --git a/third_party/twisted_8_1/twisted/internet/cfreactor.py b/third_party/twisted_8_1/twisted/internet/cfreactor.py
deleted file mode 100644
index 84ccaea960081b4fd30c968e8f1f69f842fca5aa..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/internet/cfreactor.py
+++ /dev/null
@@ -1,342 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-"""
-This module provides support for Twisted to interact with CoreFoundation
-CFRunLoops. This includes Cocoa's NSRunLoop.
-
-In order to use this support, simply do the following::
-
- | from twisted.internet import cfreactor
- | cfreactor.install()
-
-Then use the twisted.internet APIs as usual. The other methods here are not
-intended to be called directly under normal use. However, install can take
-a runLoop kwarg, and run will take a withRunLoop arg if you need to explicitly
-pass a CFRunLoop for some reason. Otherwise it will make a pretty good guess
-as to which runLoop you want (the current NSRunLoop if PyObjC is imported,
-otherwise the current CFRunLoop. Either way, if one doesn't exist, it will
-be created).
-
-Maintainer: U{Bob Ippolito<mailto:bob@redivi.com>}
-"""
-
-__all__ = ['install']
-
-import sys
-
-# hints for py2app
-import Carbon.CF
-import traceback
-
-import cfsupport as cf
-
-from zope.interface import implements
-
-from twisted.python import log, threadable, failure
-from twisted.internet.interfaces import IReactorFDSet
-from twisted.internet import posixbase, error
-from weakref import WeakKeyDictionary
-from Foundation import NSRunLoop
-from AppKit import NSApp
-
-# cache two extremely common "failures" without traceback info
-_faildict = {
- error.ConnectionDone: failure.Failure(error.ConnectionDone()),
- error.ConnectionLost: failure.Failure(error.ConnectionLost()),
-}
-
-class SelectableSocketWrapper(object):
- _objCache = WeakKeyDictionary()
-
- cf = None
- def socketWrapperForReactorAndObject(klass, reactor, obj):
- _objCache = klass._objCache
- if obj in _objCache:
- return _objCache[obj]
- v = _objCache[obj] = klass(reactor, obj)
- return v
- socketWrapperForReactorAndObject = classmethod(socketWrapperForReactorAndObject)
-
- def __init__(self, reactor, obj):
- if self.cf:
- raise ValueError, "This socket wrapper is already initialized"
- self.reactor = reactor
- self.obj = obj
- obj._orig_ssw_connectionLost = obj.connectionLost
- obj.connectionLost = self.objConnectionLost
- self.fd = obj.fileno()
- self.writing = False
- self.reading = False
- self.wouldRead = False
- self.wouldWrite = False
- self.cf = cf.PyCFSocket(obj.fileno(), self.doRead, self.doWrite, self.doConnect)
- self.cf.stopWriting()
- reactor.getRunLoop().addSocket(self.cf)
-
- def __repr__(self):
- return 'SSW(fd=%r r=%r w=%r x=%08x o=%08x)' % (self.fd, int(self.reading), int(self.writing), id(self), id(self.obj))
-
- def objConnectionLost(self, *args, **kwargs):
- obj = self.obj
- self.reactor.removeReader(obj)
- self.reactor.removeWriter(obj)
- obj.connectionLost = obj._orig_ssw_connectionLost
- obj.connectionLost(*args, **kwargs)
- try:
- del self._objCache[obj]
- except:
- pass
- self.obj = None
- self.cf = None
-
- def doConnect(self, why):
- pass
-
- def startReading(self):
- self.cf.startReading()
- self.reading = True
- if self.wouldRead:
- if not self.reactor.running:
- self.reactor.callLater(0, self.doRead)
- else:
- self.doRead()
- self.wouldRead = False
- return self
-
- def stopReading(self):
- self.cf.stopReading()
- self.reading = False
- self.wouldRead = False
- return self
-
- def startWriting(self):
- self.cf.startWriting()
- self.writing = True
- if self.wouldWrite:
- if not self.reactor.running:
- self.reactor.callLater(0, self.doWrite)
- else:
- self.doWrite()
- self.wouldWrite = False
- return self
-
- def stopWriting(self):
- self.cf.stopWriting()
- self.writing = False
- self.wouldWrite = False
-
- def _finishReadOrWrite(self, fn, faildict=_faildict):
- try:
- why = fn()
- except:
- why = sys.exc_info()[1]
- log.err()
- if why:
- try:
- f = faildict.get(why.__class__) or failure.Failure(why)
- self.objConnectionLost(f)
- except:
- log.err()
- if self.reactor.running:
- self.reactor.simulate()
-
- def doRead(self):
- obj = self.obj
- if not obj:
- return
- if not self.reading:
- self.wouldRead = True
- if self.reactor.running:
- self.reactor.simulate()
- return
- self._finishReadOrWrite(obj.doRead)
-
- def doWrite(self):
- obj = self.obj
- if not obj:
- return
- if not self.writing:
- self.wouldWrite = True
- if self.reactor.running:
- self.reactor.simulate()
- return
- self._finishReadOrWrite(obj.doWrite)
-
- def __hash__(self):
- return hash(self.fd)
-
-class CFReactor(posixbase.PosixReactorBase):
- implements(IReactorFDSet)
- # how long to poll if we're don't care about signals
- longIntervalOfTime = 60.0
-
- # how long we should poll if we do care about signals
- shortIntervalOfTime = 1.0
-
- # don't set this
- pollInterval = longIntervalOfTime
-
- def __init__(self, runLoop=None):
- self.readers = {}
- self.writers = {}
- self.running = 0
- self.crashing = False
- self._doRunUntilCurrent = True
- self.timer = None
- self.runLoop = None
- self.nsRunLoop = None
- self.didStartRunLoop = False
- if runLoop is not None:
- self.getRunLoop(runLoop)
- posixbase.PosixReactorBase.__init__(self)
-
- def getRunLoop(self, runLoop=None):
- if self.runLoop is None:
- self.nsRunLoop = runLoop or NSRunLoop.currentRunLoop()
- self.runLoop = cf.PyCFRunLoop(self.nsRunLoop.getCFRunLoop())
- return self.runLoop
-
- def addReader(self, reader):
- self.readers[reader] = SelectableSocketWrapper.socketWrapperForReactorAndObject(self, reader).startReading()
-
- def addWriter(self, writer):
- self.writers[writer] = SelectableSocketWrapper.socketWrapperForReactorAndObject(self, writer).startWriting()
-
- def removeReader(self, reader):
- wrapped = self.readers.get(reader, None)
- if wrapped is not None:
- del self.readers[reader]
- wrapped.stopReading()
-
- def removeWriter(self, writer):
- wrapped = self.writers.get(writer, None)
- if wrapped is not None:
- del self.writers[writer]
- wrapped.stopWriting()
-
-
- def getReaders(self):
- return self.readers.keys()
-
-
- def getWriters(self):
- return self.writers.keys()
-
-
- def removeAll(self):
- r = self.readers.keys()
- for s in self.readers.itervalues():
- s.stopReading()
- for s in self.writers.itervalues():
- s.stopWriting()
- self.readers.clear()
- self.writers.clear()
- return r
-
- def run(self, installSignalHandlers=1, withRunLoop=None):
- if self.running:
- raise ValueError, "Reactor already running"
- if installSignalHandlers:
- self.pollInterval = self.shortIntervalOfTime
- runLoop = self.getRunLoop(withRunLoop)
- self._startup()
-
- self.startRunning(installSignalHandlers=installSignalHandlers)
-
- self.running = True
- if NSApp() is None and self.nsRunLoop.currentMode() is None:
- # Most of the time the NSRunLoop will have already started,
- # but in this case it wasn't.
- runLoop.run()
- self.crashing = False
- self.didStartRunLoop = True
-
- def callLater(self, howlong, *args, **kwargs):
- rval = posixbase.PosixReactorBase.callLater(self, howlong, *args, **kwargs)
- if self.timer:
- timeout = self.timeout()
- if timeout is None:
- timeout = howlong
- sleepUntil = cf.now() + min(timeout, howlong)
- if sleepUntil < self.timer.getNextFireDate():
- self.timer.setNextFireDate(sleepUntil)
- else:
- pass
- return rval
-
- def iterate(self, howlong=0.0):
- if self.running:
- raise ValueError, "Can't iterate a running reactor"
- self.runUntilCurrent()
- self.doIteration(howlong)
-
- def doIteration(self, howlong):
- if self.running:
- raise ValueError, "Can't iterate a running reactor"
- howlong = howlong or 0.01
- pi = self.pollInterval
- self.pollInterval = howlong
- self._doRunUntilCurrent = False
- self.run()
- self._doRunUntilCurrent = True
- self.pollInterval = pi
-
- def simulate(self):
- if self.crashing:
- return
- if not self.running:
- raise ValueError, "You can't simulate a stopped reactor"
- if self._doRunUntilCurrent:
- self.runUntilCurrent()
- if self.crashing:
- return
- if self.timer is None:
- return
- nap = self.timeout()
- if nap is None:
- nap = self.pollInterval
- else:
- nap = min(self.pollInterval, nap)
- if self.running:
- self.timer.setNextFireDate(cf.now() + nap)
- if not self._doRunUntilCurrent:
- self.crash()
-
- def _startup(self):
- if self.running:
- raise ValueError, "Can't bootstrap a running reactor"
- self.timer = cf.PyCFRunLoopTimer(cf.now(), self.pollInterval, self.simulate)
- self.runLoop.addTimer(self.timer)
-
- def cleanup(self):
- pass
-
- def sigInt(self, *args):
- self.callLater(0.0, self.stop)
-
- def crash(self):
- if not self.running:
- raise ValueError, "Can't crash a stopped reactor"
- posixbase.PosixReactorBase.crash(self)
- self.crashing = True
- if self.timer is not None:
- self.runLoop.removeTimer(self.timer)
- self.timer = None
- if self.didStartRunLoop:
- self.runLoop.stop()
-
- def stop(self):
- if not self.running:
- raise ValueError, "Can't stop a stopped reactor"
- posixbase.PosixReactorBase.stop(self)
-
-def install(runLoop=None):
- """Configure the twisted mainloop to be run inside CFRunLoop.
- """
- reactor = CFReactor(runLoop=runLoop)
- reactor.addSystemEventTrigger('after', 'shutdown', reactor.cleanup)
- from twisted.internet.main import installReactor
- installReactor(reactor)
- return reactor
« no previous file with comments | « third_party/twisted_8_1/twisted/internet/base.py ('k') | third_party/twisted_8_1/twisted/internet/cfsupport/cfdate.pxi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698