コード例 #1
0
ファイル: test_proto.py プロジェクト: 75912001/endless-lib
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
ファイル: test_proto.py プロジェクト: 75912001/endless-lib
	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);