passing arguments to tcpserver classes

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Eric Spaulding

    #1

    passing arguments to tcpserver classes

    Is there an easy way to pass arguments to a handler class that is used
    by the standard TCPServer?

    normally --srvr =SocketServer.T CPServer(('',po rt_num), TCPHandlerClass )

    I'd like to be able to: srvr =SocketServer.T CPServer(('',po rt_num),
    TCPHandlerClass , (arg1,arg2))

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

    Where TCPHandlerClass :

    class TCPHandlerClass (SocketServer.S treamRequestHan dler):
    def handle(self):
    #handle stream events here#


    Thanks for any advice.

  • Justin Ezequiel

    #2
    Re: passing arguments to tcpserver classes

    On Jun 13, 10:19 pm, Eric Spaulding <e...@cornell.e duwrote:
    Is there an easy way to pass arguments to a handler class that is used
    by the standard TCPServer?
    >
    normally --srvr =SocketServer.T CPServer(('',po rt_num), TCPHandlerClass )
    >
    I'd like to be able to: srvr =SocketServer.T CPServer(('',po rt_num),
    TCPHandlerClass , (arg1,arg2))
    >
    And have arg1, arg2 available via TCPHandlerClass .__init__ or some other
    way.
    >
    I use the following method.
    Would also like to know if there's another way to do this.

    class SVNUpdateReques tHandler(Socket Server.BaseRequ estHandler):
    def __init__(self, svn, wms, *args, **kwargs):
    self.svn = svn
    self.wms = wms
    # NEED to set additional attributes before parent init
    SocketServer.Ba seRequestHandle r.__init__(self , *args,
    **kwargs)

    def handle(self):
    pass

    def get_handler(svn , wms):
    class RequestHandler( SVNUpdateReques tHandler):
    def __init__(self, *args, **kwargs):
    SVNUpdateReques tHandler.__init __(self, svn, wms,
    *args, **kwargs)

    return RequestHandler

    def main(port, requesthandler) :
    server = SVNUpdateServer (('', port), requesthandler)
    while 1:
    server.handle_r equest()

    if __name__ == '__main__':
    svn, wms = sys.argv[1:]

    requesthandler = get_handler(svn , wms)
    main(port, requesthandler)

    Comment

    • Mark T

      #3
      Re: passing arguments to tcpserver classes


      "Eric Spaulding" <els24@cornell. eduwrote in message
      news:mailman.90 58.1181745026.3 2031.python-list@python.org ...
      Is there an easy way to pass arguments to a handler class that is used by
      the standard TCPServer?
      >
      normally --srvr =SocketServer.T CPServer(('',po rt_num), TCPHandlerClass )
      >
      I'd like to be able to: srvr =SocketServer.T CPServer(('',po rt_num),
      TCPHandlerClass , (arg1,arg2))
      >
      And have arg1, arg2 available via TCPHandlerClass .__init__ or some other
      way.
      >
      Where TCPHandlerClass :
      >
      class TCPHandlerClass (SocketServer.S treamRequestHan dler):
      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(Socket Server.Threadin gTCPServer):
      def __init__(self, server_address, RequestHandlerC lass,arg1,arg2) :
      SocketServer.Th readingTCPServe r.__init__(self ,server_address ,RequestHandler Class)
      self.arg1 = arg1
      self.arg2 = arg2

      class MyHandler(Socke tServer.StreamR equestHandler):
      def handle(self):
      print self.server.arg 1
      print self.server.arg 2

      if __name__ == '__main__':
      srv = MyServer(('',50 00),MyHandler,1 23,456)
      srv.serve_forev er()

      --Mark

      Comment

      Working...