void CJorFileReader::OnWork() { int nRet = J_OK; J_StreamHeader streamHeader; char *pBuffer = new char[1024 * 1024 * 5]; int nfd = 0; while (m_bRun) { if (m_lastTime == 0) { TLock(m_mux); m_cond.Wait(m_mux); //m_jorHelper.ReadFile(m_recvSocket, m_resid.c_str(), 0, 2*60*1000); //m_lastTime += 2*60*1000; //nfd = m_recvSocket->GetHandle(); TUnlock(m_mux); } if (m_buffer->GetIdleLength() != RECORD_BUFF_SIZE) { j_sleep(10); continue; } TLock(m_locker); J_DataHead head = {0}; j_sleep(39); int nLen = m_recvSocket->Read_n((char *)&head, sizeof(head)); if (nLen < 0) { J_OS::LOGERROR("CJorFileReader::OnRead recv data error"); //TUnlock(m_locker); //return J_SOCKET_ERROR; //未处理 m_bRun = false; TUnlock(m_locker); break; } int nLength = ntohl(head.data_len); nLen = m_recvSocket->Read_n(pBuffer, nLength); if (nLen > 0) { int nRet = 0; J_StreamHeader streamHeader = {0}; streamHeader.timeStamp = ntohll(head.time_stamp); streamHeader.frameType = ntohl(head.frame_type); streamHeader.dataLen = nLength; streamHeader.frameNum = ntohl(head.frame_seq); if (nRet == J_OK) { m_buffer->PushBuffer(pBuffer, streamHeader); m_lastTime -= 40; } } TUnlock(m_locker); } delete pBuffer; }
void CBroadCastListener::OnWork() { //BroadCastFtpInfo info = {0}; //strcpy(info.ftp_addr, "127.0.0.1"); //info.ftp_port = 8504; //strcpy(info.host_id, "111"); //strcpy(info.user_name, "joo"); //strcpy(info.pass_word, "1"); //JoHostManager->UpdateHostInfo(info); SOCKADDR_IN sockAddrInClient = {0}; int iAddrLen = sizeof(sockAddrInClient); int nSockAddrSize; int nRecvSize; while(m_bStart) { nSockAddrSize = sizeof ( SOCKADDR_IN ); memset (&sockAddrInClient, 0, sizeof(sockAddrInClient)); memset (m_recvBuff, 0, sizeof(sockAddrInClient)); nRecvSize = recvfrom (m_broadCastListener, m_recvBuff, 1400, 0, (SOCKADDR FAR *) &sockAddrInClient, &nSockAddrSize); if(nRecvSize == SOCKET_ERROR) { j_sleep(1000); continue; } else { BroadCastFtpInfo *pInfo = (BroadCastFtpInfo *)m_recvBuff; //J_OS::LOGINFO("BroadCast Recive %s ", pInfo->host_id); JoHostManager->UpdateHostInfo(*pInfo); } } }
void CHikRemoteReader::OnRecvData(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize) { if (dwDataType == 2) { J_StreamHeader streamHeader; m_parser.InputData((const char *)pBuffer, dwBufSize); j_result_t nResult = m_parser.GetOnePacket(m_pDataBuff, streamHeader); while (nResult == J_OK) { //J_OS::LOGINFO("%d %d", streamHeader.dataLen, m_ringBuffer.GetIdleLength()); streamHeader.timeStamp = m_startTime; m_startTime += 20; m_ringBuffer.PushBuffer(m_pDataBuff, streamHeader); nResult = m_parser.GetOnePacket(m_pDataBuff, streamHeader); j_sleep(20); } } }
CNvrFileReader::~CNvrFileReader() { m_bRun = false; m_thread.Release(); j_sleep(1000); J_OS::LOGINFO("CNvrFileReader::~CloseFile"); TLock(m_locker); if (m_buffer != NULL) delete m_buffer; if (m_pBuffer != NULL) delete m_pBuffer; J_OS::LOGINFO("CNvrFileReader::Lock(m_locker)"); CloseFile(); J_OS::LOGINFO("CNvrFileReader::TUnlock(m_locker)"); TUnlock(m_locker); //m_timer.Destroy(); J_OS::LOGINFO("CNvrFileReader::~CNvrFileReader"); }
void CNvrFileReader::OnWork() { int nRet = J_OK; J_StreamHeader streamHeader; while (m_bRun) { if (m_lastTime == 0) { /*TLock(m_mux); if (m_cond.TimeWait(m_mux, 1, 0) < 0) { streamHeader.dataLen = 0; streamHeader.frameType = jo_file_end; streamHeader.timeStamp = 0; streamHeader.frameNum = 0; m_buffer->PushBuffer(m_pBuffer, streamHeader); TUnlock(m_mux); return; } TUnlock(m_mux);*/ j_sleep(1); continue; } if (m_buffer->GetIdleLength() != RECORD_BUFF_SIZE) { j_sleep(1); continue; } //J_OS::LOGINFO("1"); TLock(m_locker); //J_OS::LOGINFO("2"); if (m_pFileId == NULL || ftell(m_pFileId) >= m_fileEnd) { nRet = OpenFile(); if (nRet != J_OK) { //未处理 J_OS::LOGINFO("CNvrFileReader::OnWork() error %d", nRet); m_bRun = false; //J_OS::LOGINFO("3"); TUnlock(m_locker); //J_OS::LOGINFO("4"); break; } } int nReadLen = 0; if (m_bGoNext) { nReadLen = fread(&m_nextHeader, 1, sizeof(m_nextHeader), m_pFileId); if (nReadLen == 0) { //J_OS::LOGINFO("5"); TUnlock(m_locker); //J_OS::LOGINFO("6"); continue; } m_bGoNext = false; } if (m_nextTimeStamp != 0 && m_nextHeader.timeStamp > m_nextTimeStamp && m_nextHeader.timeStamp - m_nextTimeStamp > 120000) { //未处理 streamHeader.dataLen = 0; streamHeader.frameType = jo_file_end; streamHeader.timeStamp = 0; streamHeader.frameNum = 0; } m_nextTimeStamp = m_nextHeader.timeStamp; streamHeader = m_nextHeader; nReadLen = fread(m_pBuffer, 1, streamHeader.dataLen, m_pFileId); //J_OS::LOGINFO("7"); TUnlock(m_locker); //J_OS::LOGINFO("8"); m_buffer->PushBuffer(m_pBuffer, streamHeader); m_lastTime -= 40; m_bGoNext = true; } }