def chat_task(ctx, pipe, ncmds): n = Pyre(ctx=ctx) n.join("CHAT") n.start() # wait for someone else to join the chat while not n.peer_groups(): pass pipe.send('ready'.encode('utf-8')) cmds = 0 t0 = time.time() poller = zmq.Poller() poller.register(pipe, zmq.POLLIN) poller.register(n.inbox, zmq.POLLIN) while (True): items = dict(poller.poll()) if pipe in items and items[pipe] == zmq.POLLIN: message = pipe.recv() # message to quit if message.decode('utf-8') == "$$STOP": break n.shout("CHAT", message) if n.inbox in items and items[n.inbox] == zmq.POLLIN: n.recv() cmds += 1 if cmds == ncmds: msg = 'Got %s msgs in %0.2f sec' % (cmds, time.time() - t0) pipe.send(msg.encode('utf-8')) n.stop()
def chat_task(ctx, pipe, ncmds): n = Pyre(ctx=ctx) n.join("CHAT") n.start() # wait for someone else to join the chat while not n.peer_groups(): pass pipe.send('ready'.encode('utf-8')) cmds = 0 t0 = time.time() poller = zmq.Poller() poller.register(pipe, zmq.POLLIN) poller.register(n.inbox, zmq.POLLIN) while(True): items = dict(poller.poll()) if pipe in items and items[pipe] == zmq.POLLIN: message = pipe.recv() # message to quit if message.decode('utf-8') == "$$STOP": break n.shout("CHAT", message) if n.inbox in items and items[n.inbox] == zmq.POLLIN: n.recv() cmds += 1 if cmds == ncmds: msg = 'Got %s msgs in %0.2f sec' % (cmds, time.time() - t0) pipe.send(msg.encode('utf-8')) n.stop()
def network_thread(self, ctx, pipe): print("Network thread started..") n = Pyre(self.name) n.join("Car2X") n.start() poller = zmq.Poller() poller.register(pipe, zmq.POLLIN) poller.register(n.inbox, zmq.POLLIN) # wait for others while not n.peer_groups(): time.sleep(0.0001) pass pipe.send('$$ready'.encode('utf-8')) while not self.stopped: items = dict(poller.poll()) if pipe in items and items[pipe] == zmq.POLLIN: # handle outgoing messages try: message = pipe.recv() if message.decode('utf-8') == "$$STOP": break n.shouts("Car2X", message.decode('utf-8')) except zmq.error.Again: print("ERROR! Again #1") if n.inbox in items and items[n.inbox] == zmq.POLLIN: try: cmds = n.recv() msg_type = cmds.pop(0) msg_uuid = cmds.pop(0) msg_name = cmds.pop(0) if msg_type == "JOIN": print("{} joined!".format(msg_name)) # ADD CAR IF NOT CONTROL if msg_name[0:1] != "$": self.window.hosts.append(msg_name) elif msg_type == "EXIT": print("{} left!".format(msg_name)) # REMOVE CAR if msg_name in self.window.hosts: self.window.hosts.remove(msg_name) elif msg_type == "SHOUT": # handling incoming information msg_channel = cmds.pop(0) msg_str = cmds.pop(0) self.process_data(msg_str, msg_name) except zmq.error.Again: print("ERROR! Again #2") n.stop()