Example #1
0
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");
	}
}
Example #2
0
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;
}
Example #3
0
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;
}