Пример #1
0
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;
}