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 dealmsg(self, cmdid, result, primsg): if ( 1 == parse_msg(login, cmdid, result, primsg, self)): if ( 1 == parse_msg(db, cmdid, result, primsg, self)): pass; else: return; else: return; print "没有处理函数:%#X, %#X"%(cmdid, result); show.print_hex_16(primsg);