void CHikv3Channel::ExchangeData() { if (NULL == m_recvSocket) return; HikCommHead commHead; memset(&commHead, 0, sizeof(HikCommHead)); commHead.len = htonl(sizeof(HikCommHead)); commHead.protoType = /*(THIS_SDK_VERSION < NETSDK_VERSION_V30) ? 90 : */99; commHead.command = htonl(HIK_CMD_DATA_EXCHANGE); commHead.userId = htonl(m_pAdapter->GetUserId()); m_pAdapter->GetLocalNetInfo(commHead.clientIP, commHead.clientMAC); commHead.checkSum = htonl(m_pAdapter->CheckSum((unsigned char*) &commHead, sizeof(HikCommHead))); if (m_recvSocket->Write((char*) &commHead, sizeof(commHead)) < 0) { /*CMediaMessage *pMessage = new CMediaMessage(); pMessage->SetMsgType(MSG_MEDIA_BROKEN); pMessage->SetResid(m_resid.c_str()); CXMessageQueue::Instance()->PostMessage(MSG_MEDIA, pMessage);*/ StopView(); J_OS::LOGINFO("CHikv3Channel::ExchangeData ExchangeData error"); } }
int CHikv3Channel::CloseStream(J_Obj *pObj, CRingBuffer *pRingBuffer) { if (!m_bOpened) return J_OK; CHikv3Stream *pHikStream = dynamic_cast<CHikv3Stream *>(pObj); if (pHikStream == NULL) return J_OK; //if (pHeader != NULL) // delete pHeader; if (pHikStream->RingBufferCount() == 1) { StopView(); m_bOpened = false; (dynamic_cast<CHikv3Stream *> (pObj))->Shutdown(); pHikStream->DelRingBuffer(pRingBuffer); delete (dynamic_cast<CHikv3Stream *> (pObj)); return J_NO_REF; } if (pHikStream->RingBufferCount() > 0) pHikStream->DelRingBuffer(pRingBuffer); return J_OK; }
j_result_t CXlClient::OnRealStop(J_AsioDataBase *pAsioData) { CliRealPlay *pReps = (CliRealPlay *)(m_readBuff + sizeof(CmdHeader)); J_OS::LOGINFO("CXlClient::OnRealStop hostId = %s, channel = %d", pReps->hostId, pReps->channel & 0xFF); StopView(*pReps, pAsioData); int nBodyLen = sizeof(CmdHeader) + sizeof(CliRealViewRetValue) + sizeof(CmdTail); CliRealViewRetValue data = {0}; strcpy(data.pHostId, pReps->hostId); data.nChannelId = pReps->channel; data.nRetVal = 0x00; CXlHelper::MakeResponse(xlc_stop_real_view, (j_char_t *)&data, sizeof(CliRealViewRetValue), m_writeBuff); pAsioData->ioCall = J_AsioDataBase::j_write_e; CXlHelper::MakeNetData(pAsioData, m_writeBuff, nBodyLen); if (m_nRefCnt > 0) atomic_dec(&m_nRefCnt); return J_OK; }