bool HSLanFilter::CreaterMessage(google::protobuf::Message* msg) { if (!msg) { return false; } std::string msgName = msg->GetTypeName(); CCLog(msgName.c_str()); if(!msg->IsInitialized()) { CCString* pErrorInfo = CCString::createWithFormat("Init Error [ %s ]",msgName.c_str()); HSMessageBox(pErrorInfo->getCString()); pErrorInfo->release(); return false; } std::string strbody = msg->SerializeAsString(); std::map<std::string,int>::iterator it = m_lanProtocol.find(msgName); if (it == this->m_lanProtocol.end()) { msgName.append(" LAN Not registered "); CC_SAFE_DELETE(msg); return false; } long long checksum = (long long)(this->Adler32((unsigned char*)strbody.c_str(),strbody.length())); MessageInfo hsMsg = message::MessageInfo::default_instance(); hsMsg.Clear(); message::Head* head = hsMsg.mutable_head(); head->set_checksum(checksum); head->set_sign(0); head->set_uid(HS_GAME_CACHE_DATA_LAN().uuid()); head->set_imei("Ambition:IMEI"); Body* body = hsMsg.mutable_body(); body->add_commandid(it->second); body->add_data(strbody); std::string data = hsMsg.SerializeAsString(); CCLog("Send_Lan %d: %s",data.length(),data.c_str()); HSJava::ShaderJava()->distributeDataToOthers(data.c_str(), data.length()); delete msg; msg = NULL; return true; }