def thread_loop(self, context, pipe): n = Pyre(self.name) n.join(self.group) n.start() poller = zmq.Poller() poller.register(pipe, zmq.POLLIN) logger.debug(n.socket()) poller.register(n.socket(), zmq.POLLIN) while (True): try: #this should not fail but it does sometimes. We need to clean this out. # I think we are not treating sockets correclty as they are not thread-save. items = dict(poller.poll(self.timeout)) except zmq.ZMQError: logger.warning('Socket fail.') # print(n.socket(), items) if pipe in items and items[pipe] == zmq.POLLIN: message = pipe.recv() # message to quit if message.decode('utf-8') == exit_thread: break elif message.decode('utf-8') == init_master_sync: self.timeout = 3000 else: logger.debug("Emitting to '%s' to '%s' " % (message, self.group)) n.shouts(self.group, message) if n.socket() in items and items[n.socket()] == zmq.POLLIN: cmds = n.recv() msg_type = cmds.pop(0) msg_type = msg_type.decode('utf-8') if msg_type == "SHOUT": uid, name, group, msg = cmds logger.debug("'%s' shouts '%s'." % (name, msg)) self.handle_msg(name, msg) elif msg_type == "WHISPER": uid, name, msg = cmds logger.debug("'%s/' whispers '%s'." % (name, msg)) self.handle_msg_whisper(uid, name, msg, n) elif msg_type == "JOIN": uid, name, group = cmds if group == self.group: self.group_members[uid] = name self.update_gui() elif msg_type == "EXIT": uid, name = cmds try: del self.group_members[uid] except KeyError: pass else: self.update_gui() # elif msg_type == "LEAVE": # uid,name,group = cmds # elif msg_type == "ENTER": # uid,name,headers,ip = cmds # logger.warning((uid,'name',headers,ip)) elif not items: #timeout events are used for pupil sync. if self.sync_master is self: if self.sync_nodes: node_uid = self.sync_nodes.pop(0) logger.info("Synchonizing node %s" % self.group_members[node_uid]) n.whispers(uuid.UUID(bytes=node_uid), sync_time_init) else: self.timeout = None self.sync_master = None logger.info("All other Pupil nodes are sycronized.") elif self.sync_master: t0 = self.g_pool.capture.get_timestamp() n.whispers(uuid.UUID(bytes=self.sync_master), sync_time_request + '%s' % t0) else: pass logger.debug('thread_loop closing.') self.thread_pipe = None n.stop()
def thread_loop(self,context,pipe): n = Pyre(self.name) n.join(self.group) n.start() poller = zmq.Poller() poller.register(pipe, zmq.POLLIN) logger.debug(n.socket()) poller.register(n.socket(), zmq.POLLIN) while(True): try: #this should not fail but it does sometimes. We need to clean this out. # I think we are not treating sockets correclty as they are not thread-save. items = dict(poller.poll(self.timeout)) except zmq.ZMQError: logger.warning('Socket fail.') # print(n.socket(), items) if pipe in items and items[pipe] == zmq.POLLIN: message = pipe.recv() # message to quit if message.decode('utf-8') == exit_thread: break elif message.decode('utf-8') == init_master_sync: self.timeout = 3000 else: logger.debug("Emitting to '%s' to '%s' " %(message,self.group)) n.shouts(self.group, message) if n.socket() in items and items[n.socket()] == zmq.POLLIN: cmds = n.recv() msg_type = cmds.pop(0) msg_type = msg_type.decode('utf-8') if msg_type == "SHOUT": uid,name,group,msg = cmds logger.debug("'%s' shouts '%s'."%(name,msg)) self.handle_msg(name,msg) elif msg_type == "WHISPER": uid,name,msg = cmds logger.debug("'%s/' whispers '%s'."%(name,msg)) self.handle_msg_whisper(uid,name,msg,n) elif msg_type == "JOIN": uid,name,group = cmds if group == self.group: self.group_members[uid] = name self.update_gui() elif msg_type == "EXIT": uid,name = cmds try: del self.group_members[uid] except KeyError: pass else: self.update_gui() # elif msg_type == "LEAVE": # uid,name,group = cmds # elif msg_type == "ENTER": # uid,name,headers,ip = cmds # logger.warning((uid,'name',headers,ip)) elif not items: #timeout events are used for pupil sync. if self.sync_master is self: if self.sync_nodes: node_uid = self.sync_nodes.pop(0) logger.info("Synchonizing node %s"%self.group_members[node_uid]) n.whispers(uuid.UUID(bytes=node_uid),sync_time_init) else: self.timeout = None self.sync_master = None logger.info("All other Pupil nodes are sycronized.") elif self.sync_master: t0 = self.g_pool.capture.get_timestamp() n.whispers(uuid.UUID(bytes=self.sync_master),sync_time_request+'%s'%t0) else: pass logger.debug('thread_loop closing.') self.thread_pipe = None n.stop()
print('jdata type 2 : ', type(jdata2)) print('jdata: ', jdata) print('jdata2: ', jdata2) try: jdata4 = json.loads(data) print('jdata type 4 : ', type(jdata4)) print('jdata4: ', jdata4) except Exception as e: print('Exception: ', e) # jdata4 = json.loads(data) # print('jdata type 4 : ', type(jdata4)) # print('jdata4: ', jdata4) if len(data) > 40: print('INSIDE IF *******************') jdata3 = json.loads(data) print('jdata type 3 : ', type(jdata3)) print('jdata3: ', jdata3) print('jdata3[car]: ', jdata3['car']) print('jdata3[car][car2]: ', jdata3['car']['car2']) # print(json.loads(jdata)['car']) # print(jdata2['car']) n.whispers(sender_uuid, wsp_msg) print('MESSAGE sent') print('+++++++ JDATA END +++++++++') print('Finished')