[Twisted-web] LiveEvil output buffer patch

Justin Johnson twisted-web@twistedmatrix.com
Tue, 17 Feb 2004 13:26:21 -0600


Here's a patch to add script buffering to liveevil.py.  One additional
change is needed, but I'm not sure where to put it.  self.output needs to
be reset to None when the connection is closed.  Currently I'm getting
around this by using liveevil as the mind and setting mind.output = None
in my render_ method where I know I can reset it before using liveevil
again.  Anyone have any ideas for a better place to reset this?


Index: liveevil.py
===================================================================
RCS file: /cvs/Quotient/nevow/liveevil.py,v
retrieving revision 1.2
diff -u -r1.2 liveevil.py
--- liveevil.py 26 Jan 2004 18:30:12 -0000      1.2
+++ liveevil.py 17 Feb 2004 19:19:41 -0000
@@ -38,11 +38,16 @@
         # TODO set up an event hub
         self.events = events.EventNotification()
         self.hookupNotifications = []
+        self.outputBuffer = []

     def hookupOutput(self, output, finisher = None):
         #print "output hooked up."
         self.output = output
         self.finisher = finisher
+        for buf in self.outputBuffer:
+            output(buf)
+            #print "Sent buffered item: ", buf
+        self.outputBuffer = []
         for notify in self.hookupNotifications:
             notify(self)

@@ -51,9 +56,11 @@

     def sendScript(self, script):
         if self.output:
+            #print "output sent!", script
             self.output(script)
         else:
-            print "output ignored!", script
+            self.outputBuffer.append(script)
+            #print "output buffered!", script

     def handleInput(self, identifier, *args):
         #self.sendScript(input)