コード例 #1
0
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;
}