| OLD | NEW |
| (Empty) |
| 1 # -*- test-case-name: twisted.test.test_stdio.StandardInputOutputTestCase.test_p
roducer -*- | |
| 2 # Copyright (c) 2006-2007 Twisted Matrix Laboratories. | |
| 3 # See LICENSE for details. | |
| 4 | |
| 5 """ | |
| 6 Main program for the child process run by | |
| 7 L{twisted.test.test_stdio.StandardInputOutputTestCase.test_producer} to test | |
| 8 that process transports implement IProducer properly. | |
| 9 """ | |
| 10 | |
| 11 import sys | |
| 12 | |
| 13 from twisted.internet import stdio, protocol | |
| 14 from twisted.python import log, reflect | |
| 15 | |
| 16 class ProducerChild(protocol.Protocol): | |
| 17 _paused = False | |
| 18 buf = '' | |
| 19 | |
| 20 def connectionLost(self, reason): | |
| 21 log.msg("*****OVER*****") | |
| 22 reactor.callLater(1, reactor.stop) | |
| 23 # reactor.stop() | |
| 24 | |
| 25 | |
| 26 def dataReceived(self, bytes): | |
| 27 self.buf += bytes | |
| 28 if self._paused: | |
| 29 log.startLogging(sys.stderr) | |
| 30 log.msg("dataReceived while transport paused!") | |
| 31 self.transport.loseConnection() | |
| 32 else: | |
| 33 self.transport.write(bytes) | |
| 34 if self.buf.endswith('\n0\n'): | |
| 35 self.transport.loseConnection() | |
| 36 else: | |
| 37 self.pause() | |
| 38 | |
| 39 | |
| 40 def pause(self): | |
| 41 self._paused = True | |
| 42 self.transport.pauseProducing() | |
| 43 reactor.callLater(0.01, self.unpause) | |
| 44 | |
| 45 | |
| 46 def unpause(self): | |
| 47 self._paused = False | |
| 48 self.transport.resumeProducing() | |
| 49 | |
| 50 | |
| 51 if __name__ == '__main__': | |
| 52 reflect.namedAny(sys.argv[1]).install() | |
| 53 from twisted.internet import reactor | |
| 54 stdio.StandardIO(ProducerChild()) | |
| 55 reactor.run() | |
| OLD | NEW |