void CUDP_RTSPClient::handleHeartbeatThread() { try{ while(m_brun){ int iseconds = 5*60*100/*5*60*100*/; while(iseconds > 0){ boost::this_thread::sleep(boost::posix_time::milliseconds(10)); if(!m_brun)return; iseconds--; boost::asio::socket_base::bytes_readable command(true); rtsp_socket_.io_control(command); std::size_t bytes_readable = command.get(); if( bytes_readable > 0 ) { int iret = HandleIncomingData(); if( iret < 0 && iret != Failed ){ g_MSNetSDKlog.Add("CUDP_RTSPClient::HandleIncomingData1 iret = %d", iret); return; } } } int iret = sendGet_ParameterCommand( m_url ); if(iret < 0)return; iret = HandleIncomingData(); if( iret < 0 && iret != Failed ) { g_MSNetSDKlog.Add("CUDP_RTSPClient::HandleIncomingData2 iret = %d", iret); return; } } }catch (std::exception& e){ g_MSNetSDKlog.Add("CUDP_RTSPClient::handleHeartbeatThread error = %s", e.what()); } }
//--------------------------------------------------------------------------- void Connection::DataArrivedOnSocket() { char tempReadBuffer[8192]; ZeroMemory(tempReadBuffer, 8192); int amountRead = recv(this->sock, tempReadBuffer, 8190, 0); if (SOCKET_ERROR != amountRead) { // @Note : there may have some binary data in string // FlowStatistics(amountRead); CryptData((BYTE*)tempReadBuffer,amountRead); readBuffer += string(tempReadBuffer, amountRead); HandleIncomingData(); } }
int CUDP_RTSPClient::startRTSPRequest(char* ip ,int port ,const char *url, const char* Range_clock, float scale) { strcpy(this->m_url, url); strcpy(this->m_realConnectIP, ip); int i = connectRtspSrv(ip,port); if( i < 0 )return i; i = sendSomeCommand(url); if(i < 0)return i; i = sendPlayCommand(url, scale, Range_clock); if( i < 0 )return i; i = HandleIncomingData(); if( i < 0 )return i; if( i >= 0 ) Heartbeat_thread_ = boost::thread(&CUDP_RTSPClient::handleHeartbeatThread , this); return i; }