bool CPlugInOperation::Run() { if(m_pvecCommaindInfo == NULL|| m_blIsRun == true) { m_blIsRun = false; return false; } CPacketParse* pPacketParse = new CPacketParse(); CMessage* pMessage = new CMessage(); m_blIsRun = true; while(m_blIsRun) { //这里循环发送数据包 for(int i = 0; i < (int)m_pvecCommaindInfo->size(); i++) { _CommaindInfo* pCommaindInfo = (*m_pvecCommaindInfo)[i]; if(NULL != pCommaindInfo) { pCommaindInfo->m_nSendDataCount++; //开始整合数据(丢到逻辑接口处理里面去) ACE_Message_Block* pHeadBlock = App_MessageBlockManager::instance()->Create(pPacketParse->GetPacketHeadLen()); ACE_OS::memcpy(pHeadBlock->wr_ptr(), pCommaindInfo->m_pSendData, pPacketParse->GetPacketHeadLen()); pHeadBlock->wr_ptr(pPacketParse->GetPacketHeadLen()); pPacketParse->SetPacketHead((char* )pCommaindInfo->m_pSendData, pPacketParse->GetPacketHeadLen()); pPacketParse->SetMessageHead(pHeadBlock); uint32 u4BodySize = pCommaindInfo->m_nSendDataLen - pPacketParse->GetPacketHeadLen(); ACE_Message_Block* pBodyBlock = App_MessageBlockManager::instance()->Create(u4BodySize); ACE_OS::memcpy(pBodyBlock->wr_ptr(), &pCommaindInfo->m_pSendData[pPacketParse->GetPacketHeadLen()], u4BodySize); pBodyBlock->wr_ptr(u4BodySize); pPacketParse->SetPacketData((char* )&pCommaindInfo->m_pSendData[pPacketParse->GetPacketHeadLen()], u4BodySize); pPacketParse->SetMessageBody(pBodyBlock); //开始组装数据 pMessage->GetMessageBase()->m_u4ConnectID = 1; //测试数据,固定ConnectID pMessage->GetMessageBase()->m_u2Cmd = pPacketParse->GetPacketCommandID(); pMessage->GetMessageBase()->m_u4MsgTime = (uint32)ACE_OS::gettimeofday().sec(); pMessage->GetMessageBase()->m_u4HeadSrcSize = pPacketParse->GetPacketHeadSrcLen(); pMessage->GetMessageBase()->m_u4BodySrcSize = pPacketParse->GetPacketBodySrcLen(); //pMessage->GetMessageBase()->m_ProfileTime.Start(); //将接受的数据缓冲放入CMessage对象 pMessage->SetPacketHead(pPacketParse->GetMessageHead()); pMessage->SetPacketBody(pPacketParse->GetMessageBody()); uint16 u2CommandID = pPacketParse->GetPacketCommandID(); App_MessageManager::instance()->DoMessage(pMessage, u2CommandID); pMessage->Clear(); pCommaindInfo->m_nRecvDataCount++; } //Sleep(100); } } delete pMessage; delete pPacketParse; return true; }