def __init__(self, port, loglevel, *controls): global LOGLEVEL LOGLEVEL = loglevel # need to set for the debug function self.port = port # port to serv on xmlrpc.setLogLevel(loglevel) # set the module logging level usage = USAGE # usage string self.killed = 0 # true if we've been killed self.contrl = [] # list of our control objects self.cmdlist = { # our command list 'getclient' : self.cgetclient, 'kill' : self.ckill, 'leave' : self.cleave, 'ping' : self.cping, 'usage' : self.cusage, } for cont in controls: (self.cmdlist, usage) = cont.link(self.cmdlist, usage) self.contrl.append(cont) self.usage = usage self.server = xmlrpc.server() self.server.addMethods(self.cmdlist) if sys.platform[:5] != 'linux': return # cause this doesn't work on windows self.stdin = xmlrpc.source(sys.stdin.fileno()) self.stdin.setCallback(self.cstdin, xmlrpc.ACT_INPUT, self.server) self.server.addSource(self.stdin)
def exampleCallback(): src = xmlrpc.source(sys.stdin.fileno()) print dir(src) serv = xmlrpc.server() serv.bindAndListen(2343) src.setCallback(stdinHandler, xmlrpc.ACT_INPUT, serv) serv.addSource(src) serv.work()