Hello everyone,

I implemented a push-produce a while back and I though it works, but it didn't. When the msgs where spaced out, it worked, but if several msgs were sent one after the other, then things go bad (the msgs get mixed up)...

I found this thread : http://www.twistedmatrix.com/pipermail/twisted-python/2007-March/014983.html

and I think I ave the same problem, my code looks a bit like his :

   def pauseProducing(self):
       """
       Pause the producer
       """
       self.__paused = True

   def resumeProducing(self):
       """
       Resume the producer
       """
       self.__paused = False

       while(not self.__paused and self.__startLimit < self.__total):
           data = self.__buf[self.__startLimit:self.__endLimit]
           self.transport.write(data)
           self.__startLimit = self.__endLimit
           self.__endLimit += self.__burstSize
           if(not self.__stream):
               break

       if(not self.__paused or self.__startLimit >= self.__total):
           self.stopProducing()

   def stopProducing(self):
       """
       Stop the producer
       """
       self.__paused = False
       self.__startLimit = 0
       self.__buf = None
       self.__total = None
       self.__endLimit = self.__burstSize

and when I send a msg I use this :

def sendMessage(self, msg):
       if domish.IElement.providedBy(msg):
           msg = msg.toXml()
if isinstance(msg, unicode):
           msg = msg.encode('utf-8')
self.__buf = msg
       self.__total = len(msg)
       if(self.__stream):
           self.resumeProducing()

I think what happens is that the code is re-entered, just like Jean-Paul suggested in the other thread. The thing is I didn't understand the solution, could somebody please explain it to me or suggest something else?

Thank you,
Gabriel

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to