dist/pomelo-cocos2d-js.js
/**
 * Check if the msg follow the defination in the protos
 */
Check if the msg follow the defination in the protos
Check if the msg follow the defination in the protos
function checkMsg(msg, protos){
	if(!protos || !msg){
		console.warn('no protos or msg exist! msg : %j, protos : %j', msg, protos);
		return false;
	}
	for(var name in protos){
		var proto = protos[name];
		switch(proto.option){
			case 'required' :
				if(typeof(msg[name]) === 'undefined'){
					console.warn('no property exist for required! name: %j, proto: %j, msg: %j', name, proto, msg);
					return false;
				}
			case 'optional' :
				if(typeof(msg[name]) !== 'undefined'){
					var message = protos.__messages[proto.type] || Encoder.protos['message ' + proto.type];
					if(!!message && !checkMsg(msg[name], message)){
						console.warn('inner proto error! name: %j, proto: %j, msg: %j', name, proto, msg);
						return false;
					}
				}
			break;
			case 'repeated' :
				var message = protos.__messages[proto.type] || Encoder.protos['message ' + proto.type];
				if(!!msg[name] && !!message){
					for(var i = 0; i < msg[name].length; i++){
						if(!checkMsg(msg[name][i], message)){
							return false;
						}
					}
				}
			break;
		}
	}
	return true;
}
function checkMsg ( msg , protos ) { if ( ! protos || ! msg ) { console . warn ( 'no protos or msg exist! msg : %j, protos : %j' , msg , protos ) ; return false ; } for ( var name in protos ) { var proto = protos [ name ] ; switch ( proto . option ) { case 'required' : if ( typeof ( msg [ name ] ) === 'undefined' ) { console . warn ( 'no property exist for required! name: %j, proto: %j, msg: %j' , name , proto , msg ) ; return false ; } case 'optional' : if ( typeof ( msg [ name ] ) !== 'undefined' ) { var message = protos . __messages [ proto . type ] || Encoder . protos [ 'message ' + proto . type ] ; if ( ! ! message && ! checkMsg ( msg [ name ] , message ) ) { console . warn ( 'inner proto error! name: %j, proto: %j, msg: %j' , name , proto , msg ) ; return false ; } } break ; case 'repeated' : var message = protos . __messages [ proto . type ] || Encoder . protos [ 'message ' + proto . type ] ; if ( ! ! msg [ name ] && ! ! message ) { for ( var i = 0 ; i < msg [ name ] . length ; i ++ ) { if ( ! checkMsg ( msg [ name ] [ i ] , message ) ) { return false ; } } } break ; } } return true ; }
Check if the msg follow the defination in the protos
Check if the msg follow the defination in the protos
//All required element must exist //Check nest message in repeated elements