+class RPCServer(SimpleXMLRPCServer):
+
+ def __init__(self, callbacks):
+ super().__init__(('localhost', 6000), allow_none=True)
+ self._callbacks = callbacks
+ self.register_introspection_functions()
+ self.register_function(self.screenshot, 'screenshot')
+ self.register_function(self.enforce_res, 'enforce_res')
+ self.register_function(self.verify, 'verify')
+ self.register_function(self.set_idx, 'set_idx')
+ self.register_function(self.enforce_resolution, 'enforce_resolution')
+ self.register_function(self.destroy, 'destroy')
+
+ def screenshot(self, arg):
+ taskMgr.doMethodLater(.01, self._callbacks[0], 'cb0', [arg])
+
+ def enforce_res(self, arg):
+ taskMgr.doMethodLater(.01, self._callbacks[1], 'cb1', [arg])
+
+ def verify(self):
+ taskMgr.doMethodLater(.01, self._callbacks[2], 'cb2')
+
+ def set_idx(self, arg):
+ taskMgr.doMethodLater(.01, self._callbacks[3], 'cb3', [arg])
+
+ def enforce_resolution(self, arg):
+ taskMgr.doMethodLater(.01, self._callbacks[4], 'cb4', [arg])
+
+ def destroy(self):
+ self._BaseServer__shutdown_request = True
+
+
+class RPCServerThread(Thread):