Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # A solution to exercise 1 of the Twisted tutorial at http://krondo.com/blog/?p=1778
- # class PoetryProtocol is the only thing changed from get-poetry client 4.0
- class PoetryTimeoutError(Exception): pass
- class PoetryProtocol(Protocol):
- poem = ''
- def connectionMade(self):
- port = self.transport.getPeer().port
- self.onTime = None
- # poetry downloads on even numbered ports time out after 1 sec
- # just another of the ways the universe is stacked against poetry
- if not port % 2:
- self.onTime = True
- from twisted.internet import reactor
- self.timer = reactor.callLater(1, self.timeout)
- def timeout(self):
- self.onTime = False
- self.transport.loseConnection()
- def dataReceived(self, data):
- self.poem += data
- def connectionLost(self, reason):
- if self.onTime is not None:
- if self.onTime == True:
- self.timer.cancel()
- else:
- err = PoetryTimeoutError('Evil timeout stole your poetry again!')
- self.factory.deferred.errback(Failure(err))
- return
- self.poemReceived(self.poem)
- def poemReceived(self, poem):
- self.factory.poem_finished(poem)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement