[Twisted-Python] Reflector init patch (repost)

Jonathan Lange jml at mumak.net
Mon Nov 4 02:20:44 MST 2002


On Thu, Oct 31, 2002 at 11:33:01AM +1100, Jonathan M. Lange wrote:

With reference to twisted.enterprise.reflector not making a Deferred available 
on construction, despite it being an asynchronous operation...

> Suggestions include having a populatedDeferred as a member (rather than
> populatedCallback)

I've been having troubles with my mail recently. In case this did not come 
through, here is the patch again.

Comments appreciated. Commits even more so.

Index: twisted/enterprise/reflector.py
===================================================================
RCS file: /cvs/Twisted/twisted/enterprise/reflector.py,v
retrieving revision 1.9
diff -u -r1.9 reflector.py
--- twisted/enterprise/reflector.py     16 Oct 2002 04:27:29 -0000      1.9
+++ twisted/enterprise/reflector.py     31 Oct 2002 00:57:59 -0000
@@ -20,6 +20,7 @@
 from twisted.enterprise import adbapi
 from twisted.enterprise.util import DBError, getKeyColumn, quote, _TableInfo, 
_TableRelationship
 from twisted.enterprise.row import RowObject
+from twisted.internet import defer
 
 class Reflector:
     """Base class for enterprise reflectors. This implements rowCacheing.
@@ -61,6 +62,7 @@
         
         from twisted.internet import reactor
         reactor.callLater(0, self._really_populate)
+        self.populatedDeferred = defer.Deferred()
 
     def _really_populate(self):
         """Implement me to populate schema information for the reflector.
Index: twisted/enterprise/sqlreflector.py
===================================================================
RCS file: /cvs/Twisted/twisted/enterprise/sqlreflector.py,v
retrieving revision 1.10
diff -u -r1.10 sqlreflector.py
--- twisted/enterprise/sqlreflector.py  14 Oct 2002 22:34:21 -0000      1.10
+++ twisted/enterprise/sqlreflector.py  31 Oct 2002 00:58:00 -0000
@@ -49,6 +49,7 @@
         defe = self.runInteraction(self._transPopulateSchema)
         if self.populatedCallback:
             defe.addCallbacks(self.populatedCallback)
+        defe.chainDeferred(self.populatedDeferred)
 
     def _transPopulateSchema(self, transaction):
         """Used to construct the row classes in a single interaction.





More information about the Twisted-Python mailing list