示例#1
0
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;
示例#2
0
	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;