How to use the TimeoutProtocol policy?

Martin van Es <[email protected]>
Newsgroups gmane.comp.python.twisted
Message-ID <CAFrnU35qGHwZjgmSHB2V+VR46Y6_E+uy5uq-nGN3=cZVRzd8xg@mail.gmail.com>
Hi,

I'm trying to timeout a really simple LineReceiver protocol.

It's function is to connect to a daemon, receive a line that's to be
displayed to an end-user upon which the user should undertake some
action. The action will trigger a second line (fail/success) at which
point the daemon will close the connection. If, however, the end-user
does not follow-up on the first challenge I want the script to timeout
with a failed result.

Now, I have the LineReceiver do exactly what I want, but I can't for
the life of me understand how I should "wrap" it in the TimoutProtocol
so that it disconnects after a couple of seconds?

This is my Factory:
class WebSSOFactory(ClientFactory):
 pamh = None
 client = None

 def __init__(self, pamh):
   self.pamh = pamh

 def clientConnectionLost(self, connector, reason):
   reactor.stop()

 def buildProtocol(self, addr):
   client = WebSSOClient()
   #client = TimeoutProtocol(self, WebSSOClient, 5)
   client.pamh = self.pamh
   self.client = client
   return client

And this is the protocol:
class WebSSOClient(LineReceiver):
 line = None
 pamh = None
 state = 'start'

 def __init__(self):
   print("__init__")
   self.setTimeout(5)

 def lineReceived(self, line):
   print("lineReceived")
   self.line = line
   if self.state == 'start':
     self.pamh.conversation(self.pamh.Message(self.pamh.PAM_PROMPT_ECHO_OFF,
"Visit http://***/login/%s to login\nand press <enter> to continue." %
line))
     self.state = None
   else:
     self.transport.loseConnection()

Before anyone starts to scream http (no s): This is all test/debug. I
want the timeout to work before I deploy to something more serious.

The client is loaded straightforward using a reactor.connectTCP() with
the instantiated factory object.

Best regards,
Martin
-- 
If 'but' was any useful, it would be a logic operator

_______________________________________________
Twisted-Python mailing list
[email protected]
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.