class Receiver: def __init__(self, ipAddr='127.0.0.1', port = 9001) : self.ipAddr = ipAddr self.port = port self.addr = (ipAddr, port) if LIBLO: self.t = liblo.ServerThread(port) else: self.osc = OSC.ThreadingOSCServer(self.addr) self.t = Thread(target=self.osc.serve_forever) self.t.start() def init(self): pass def listen(self): self.init() def quit(self): if LIBLO: self.t.stop() else: self.osc.close() def add(self, func, addr): if LIBLO: self.t.add_method(addr,None, lambda *f: func(f[1])) else: self.osc.addMsgHandler(addr, lambda *f: func(f[2])) def bind(self, addr,func): self.add(func, addr) def unbind(self, addr): if LIBLO: pass else: self.osc.delMsgHandler(addr) def remove(self, addr): self.unbind(addr)
class Receiver: def __init__(self, ipAddr='127.0.0.1', port = 9001) : self.ipAddr = ipAddr self.port = port self.addr = (ipAddr, port) self.tags = set() if LIBLO: #self.t = liblo.ServerThread(port, proto=liblo.TCP) self.t = liblo.ServerThread(port, proto=liblo.UDP) else: self.osc = OSC.ThreadingOSCServer(self.addr) self.t = Thread(target=self.osc.serve_forever) self.t.start() def init(self): pass def listen(self): self.init() def close(self): self.quit() def quit(self): if LIBLO: self.t.stop(); self.t.free(); gc.collect() else: self.osc.running = False; self.t.join(); self.osc.close(); def add(self, func, tag): if tag in self.tags: return if LIBLO: self.t.add_method(tag,None, lambda *f: func(f[1])) else: self.osc.addMsgHandler(tag, lambda *f: func(f[2])) self.tags.add(tag) def bind(self, tag,func): self.add(func, tag) def unbind(self, tag): if tag not in self.tags: return if LIBLO: pass # self.t.del_method(tag, None) else: self.osc.delMsgHandler(tag) self.tags.remove(tag) def remove(self, tag): self.unbind(tag) def unbind_all(self): for tag in list(self.tags): self.unbind(tag)