passing arguments to tcpserver classes

2007-06-13 Thread Eric Spaulding
Is there an easy way to pass arguments to a handler class that is used 
by the standard TCPServer?

normally --> srvr =SocketServer.TCPServer(('',port_num), TCPHandlerClass)

I'd like to be able to: srvr =SocketServer.TCPServer(('',port_num), 
TCPHandlerClass, (arg1,arg2))

And have arg1, arg2 available via TCPHandlerClass.__init__ or some other 
way.

Where TCPHandlerClass:

class TCPHandlerClass(SocketServer.StreamRequestHandler):
def handle(self):
   #handle stream events here#


Thanks for any advice.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: passing arguments to tcpserver classes

2007-06-18 Thread Eric Spaulding

Great -- thanks! (and also to J. Ezequiel).

Mark T wrote:
"Eric Spaulding" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
  
Is there an easy way to pass arguments to a handler class that is used by 
the standard TCPServer?


normally --> srvr =SocketServer.TCPServer(('',port_num), TCPHandlerClass)

I'd like to be able to: srvr =SocketServer.TCPServer(('',port_num), 
TCPHandlerClass, (arg1,arg2))


And have arg1, arg2 available via TCPHandlerClass.__init__ or some other 
way.


Where TCPHandlerClass:

class TCPHandlerClass(SocketServer.StreamRequestHandler):
   def handle(self):
  #handle stream events here#


Thanks for any advice.




In the handler class, self.server refers to the server object, so subclass 
the server and override __init__ to take any additional server parameters 
and store them as instance variables.


import SocketServer

class MyServer(SocketServer.ThreadingTCPServer):
def __init__(self, server_address, RequestHandlerClass,arg1,arg2):

SocketServer.ThreadingTCPServer.__init__(self,server_address,RequestHandlerClass)
self.arg1 = arg1
self.arg2 = arg2

class MyHandler(SocketServer.StreamRequestHandler):
def handle(self):
print self.server.arg1
print self.server.arg2

if __name__ == '__main__':
srv = MyServer(('',5000),MyHandler,123,456)
srv.serve_forever()

--Mark

  


-- 
http://mail.python.org/mailman/listinfo/python-list