def parse_msg(server, cmdid, result, primsg, self): if server.cmd_map.has_key(cmdid): if (0 != result): print "错误码! %#X"%(result); return; #得到类名 classname = server.cmd_map[cmdid][2]; if classname <> None: pri_out = classname() ; else: pri_out = msg_base.msg_byte_t(); ba = msg_base.msg_byte_t(); ba.init_read_mode(primsg); ret = pri_out.read_from_buf(ba); if(not ret): print "解析出错:报文不够"; if(ba.get_left_len() > 0): print "解析出错:有剩余报文"; show.print_hex_16(primsg[ba.get_postion():]); try: #得到调用函数 cmd_name=server.cmd_map[cmdid][0]; func_name='do_%s'%(cmd_name) ; func = getattr(self, func_name); func(result, primsg); except AttributeError: print "deal:%s[%#X]:"%(cmd_name, cmdid); pri_out.echo(False, " "); pass; else: return 1;
def pack(self, cmd, pri_in): ba = msg_base.msg_byte_t(); ba.init_write_mode(); if (pri_in <> None): pri_in.write_to_buf(ba); headermsg = self.pack_proto_header(len(ba.m_buf), cmd); msg = headermsg + ba.m_buf; return msg;