def lineReceived_recomposed(self, line): meth,rest = json.loads(line) if meth == "close": self.stop() elif meth == "ping": self.missed_heartbeats=-1 elif meth == "hello": self.log.write('Hello received\n') name = rest[0] self.name = name elif meth == 'mud_line': metaline = json_to_metaline(rest[0]) display_line = bool(rest[1]) #self.match_triggers(metaline, display_line) #self.transport.write(json.dumps(['display_line', [metaline_to_json(metaline), 1]])+'\n') self.send_to_client('display_line', [metaline_to_json(metaline),1]) elif meth == 'user_line': line = rest[0] self.log.write('User Line: %s\n'%line) #self.transport.write(json.dumps(['send_to_mud',line])+'\n') self.send_to_client('send_to_mud', line) elif meth == 'do_block': lines = json.loads(rest[0]) block = [] for l in lines: block.append(json_to_metaline(l)) self.blockReceived(block) elif meth == 'do_triggers': metaline=json_to_metaline(rest[0]) display_line = bool(rest[1]) self.metalineReceived(metaline, display_line) elif meth == 'do_aliases': line = rest[0] self.server_echo = bool(rest[1]) echo = bool(rest[2]) self.parseSend(line, echo) elif meth == 'do_gmcp': pair = rest[0] gmcp_key,gmcp_data = pair self.gmcp[gmcp_key]=gmcp_data for gmcp_event in self.gmcp_events: gmcp_event(pair, self) else: raise ValueError("bad line: %s" % line) #self.transport.write(json.dumps(["ack", [meth,rest]]) + "\n") self.send_to_client('ack', [meth,rest])
def lineReceived_recomposed(self, line): meth, rest = json.loads(line) if meth == 'ack': self.messages_not_acknowledged -= 1 if not self.messages_not_acknowledged: process_time = time.time() - self.client_started_processing_at self.communicator.total_client_time += process_time self.client_started_processing_at = None #print('Process Time: %(process_time)d, Total Process Time: %(total_process_time)d\n'% # {'process_time':process_time, 'total_process_time':self.communicator.total_client_time}) elif meth == 'send_to_mud': self.communicator.telnet.sendLine(rest) elif meth == 'ping': self.send_to_client('ping', []) elif meth == "display_line": metaline = json_to_metaline(rest[0]) soft_line_start = bool(rest[1]) self.communicator.write(metaline, soft_line_start) elif meth == 'set_active_channels': self.communicator.setActiveChannels(rest) elif meth == "hello": macros = rest[0] def make_macro(cmd): def macro(cc): cc.client.do_alias(cmd, False) return macro self.communicator.macros.clear() self.communicator.macros.update(dict((from_string(k), make_macro(l)) for k, l in macros.items())) self.communicator.macros.update(self.communicator.baked_in_macros) self.communicator.clientConnectionMade(self) elif meth == "error": if self.communicator.debug: self.communicator.cwrite('<white*:red>ERROR RECEIVED: \n %s'%rest) else: print(rest) elif meth == 'set_state': self.communicator.set_state(rest[0],rest[1]) elif meth == 'event': event_name = rest[0] args = rest[1] self.communicator.fireEventLocal(event_name, *args) elif meth == 'debug': line = rest[0] if self.communicator.debug: self.communicator.cwrite('<grey:white>PROCESSOR DEBUG [[%s]]'%line) else: print('PROCESSOR DEBUG [[%s]]'%line) else: if self.communicator.debug: self.communicator.cwrite('<white*:red>UNKNOWN METHOD RECEIVED: \n Method:%(meth)s \n Args: %(rest)s'%{'rest':rest, 'meth':meth}) else: print('UNKNOWN METHOD RECEIVED: \n Method:%(meth)s \n Args: %(rest)s'%{'rest':rest, 'meth':meth})