public UInt32 Send_UpdateRoomInfoResult(BattleRoomInfo[] room_info, UInt32 room_info_len) { UInt64 destID = mln.ProcessUnitManager.INVALID_PUUID; // PUUID UInt64 srcID = mln.ProcessUnitManager.INVALID_PUUID; // PUUID UInt64 conid = 0; GetSendID(ref destID, ref srcID, ref conid); if (destID == mln.ProcessUnitManager.INVALID_PUUID) { mln.Utility.MLN_TRACE_LOG("Fail : GetSendID"); return(0); } // if( srcID == ProcessUnitManager::INVALID_PUUID ) return 0; UInt32 totalSize = 0; //RPCPRINT( fprintf(stderr, "Send_UpdateRoomInfoResult: start") ); // check send size totalSize += 4; // array num if (room_info_len > (UInt32)BattlePuListMaxValues.SEND_UPDATEROOMINFORESULT_ROOM_INFO_LEN_MAX) { return(0); // room_info is over size } //if( room_info.Length < room_info_len ) return 0; // room_info is over size // STRUCT TYPE for (UInt32 __ind = 0; __ind < room_info_len; __ind++) { totalSize += BattleRoomInfo.length(room_info[__ind]); } //if( totalSize > left ) ERROR_RETURN(0); // Check size OK mln.EndianStream sendEs = new mln.EndianStream(mln.EndianStream.STREAM_ENDIAN.STREAM_ENDIAN_LITTLE); // little endian mln.PACKET_HEADER sendHead; sendHead.type = (UInt32)BattlePuList_FuncID.ID_UPDATEROOMINFORESULT; sendHead.dadr = (UInt64)((UInt64)0 << 32 | (UInt64)INTFID.BATTLEPULIST); sendHead.sadr = conid; sendHead.size = (UInt16)totalSize; // serialize sendHead.put(sendEs); // serialize head sendEs.put(room_info_len); // STRUCT TYPE for (UInt32 __ind = 0; __ind < room_info_len; __ind++) { BattleRoomInfo.set(sendEs, room_info[__ind]); } //RPCPRINT( "Send_UpdateRoomInfoResult: size %d done", totalSize ); // send done RPCSendPUBase(sendEs, destID, srcID); // finish ClearSendID(); return(totalSize); }