j_result_t CXlClient::SendMsgInfo(j_string_t strHostId, j_int32_t nType, j_int32_t nNo, j_int32_t nChannel) { if (nType == xlc_msg_host) { J_OS::LOGINFO("CXlClient::SendMsgInfo xlc_msg_host sub = %d", nNo); if (nNo == xlc_host_broken) { TLock(m_vecLocker); VideoInfoVec::iterator it = m_videoInfoVec.begin(); for (; it!=m_videoInfoVec.end(); ++it) { if (it->strHost == strHostId) { it->bConnected = false; } } TUnlock(m_vecLocker); } else if (nNo == xlc_host_connected) { TLock(m_vecLocker); VideoInfoVec::iterator it = m_videoInfoVec.begin(); for (; it!=m_videoInfoVec.end(); ++it) { if (!it->bConnected) { CliRealPlay realPlay = {0}; strcpy(realPlay.hostId, it->strHost.c_str()); realPlay.channel = it->nChanId; if (StartView(realPlay, NULL) == J_OK) { it->bConnected = true; } } } TUnlock(m_vecLocker); } } else { struct MessageBody { CmdHeader header; CliMessage data; CmdTail tial; } messageBody; memset (&messageBody, 0, sizeof(MessageBody)); messageBody.data.uiType = nType; messageBody.data.uiNO = nNo; messageBody.data.nChannelID = nChannel; strcpy(messageBody.data.hostID, strHostId.c_str()); CXlHelper::MakeResponse(xlc_message, (j_char_t *)&messageBody.data, sizeof(CliMessage), (j_char_t *)&messageBody); m_socket.Write_n((j_char_t *)&messageBody, sizeof(CmdHeader) + sizeof(CliMessage) + sizeof(CmdTail)); J_OS::LOGINFO("CXlClient::SendMessage %d-%d", nType, nNo); } return J_OK; }
int CHikv3Channel::OpenStream(J_Obj *&pObj, CRingBuffer *pRingBuffer) { if (m_pAdapter->GetStatus() != jo_dev_ready) { m_pAdapter->Broken(); m_pAdapter->Relogin(); m_bOpened = false; return J_DEV_BROKEN; } if (m_bOpened && pObj != NULL) { MakeIFrame(m_nChannel); /*pHeader = new char[DATA_BUFF_SIZE]; memcpy(pHeader, m_pDataBuff, DATA_BUFF_SIZE); NVRStreamHeader streamHeader; streamHeader.dataLen = 40; streamHeader.frameType = HEADER_T; pRingBuffer->PushBuffer(m_pDataBuff + sizeof(PackHeader) + 4, streamHeader);*/ (dynamic_cast<CHikv3Stream *> (pObj))->AddRingBuffer(pRingBuffer); return J_OK; } int nRet = StartView(); if (nRet != J_OK) { m_pAdapter->Broken(); m_pAdapter->Relogin(); J_OS::LOGINFO("CHikv3Channel::OpenStream StartView error, errno = %d", nRet); return J_STREAM_ERROR; } //pHeader = new char[DATA_BUFF_SIZE]; //memcpy(pHeader, m_pDataBuff, DATA_BUFF_SIZE); m_bOpened = true; pObj = new CHikv3Stream(m_recvSocket, m_resid, m_pDataBuff + 12); //J_OS::LOGINFO("CHikv3Channel ringBuffer = %x", pRingBuffer); (dynamic_cast<CHikv3Stream *> (pObj))->AddRingBuffer(pRingBuffer); (dynamic_cast<CHikv3Stream *> (pObj))->Startup(); return J_OK; }
j_result_t CXlClient::OnRealPlay(J_AsioDataBase *pAsioData) { CliRealPlay *pReps = (CliRealPlay *)(m_readBuff + sizeof(CmdHeader)); J_OS::LOGINFO("CXlClient::OnRealPlay hostId = %s, channel = %d", pReps->hostId, pReps->channel & 0xFF); if (StartView(*pReps, pAsioData) != J_OK) { J_OS::LOGINFO("CXlClient::OnRealPlay StartView failed"); } pAsioData->ioCall = J_AsioDataBase::j_read_e; CXlHelper::MakeNetData(pAsioData, m_readBuff, sizeof(CmdHeader)); if (m_nRefCnt == 0) pAsioData->ioCall = J_AsioDataBase::j_read_write_e; atomic_inc(&m_nRefCnt); return J_OK; }
virtual void ProcessEvent( EFlowEvent evt, SActivationInfo* pActInfo ) { this->awesomium = PluginManager::safeGetPluginConcreteInterface<IPluginAwesomium*>( PLUGIN_NAME ); if ( awesomium == NULL ) { return; } this->sys = this->awesomium->GetSystem(); switch ( evt ) { case eFE_Activate: if ( IsPortActive( pActInfo, EIP_START ) ) { ActivateOutput<bool>( pActInfo, EOP_STARTED, StartView( GetPortInt( pActInfo, EIP_WIDTH ), GetPortInt( pActInfo, EIP_HEIGHT ), GetPortString( pActInfo, EIP_MATNAME ), GetPortString( pActInfo, EIP_OBJNAME ) ) ); std::string url = GetPortString( pActInfo, EIP_TOURL ); if ( view && url.length() != 0 ) { view->GetView()->LoadURL( WebURL( WSLit( url.c_str() ) ) ); } } if ( viewCreated ) { if ( IsPortActive( pActInfo, EIP_RELEASE ) ) { sys->DeleteView( view ); view = NULL; viewCreated = false; } if ( IsPortActive( pActInfo, EIP_TOURL ) ) { std::string url = GetPortString( pActInfo, EIP_TOURL ); if ( view && url.length() != 0 ) { view->GetView()->LoadURL( WebURL( WSLit( url.c_str() ) ) ); } } if ( IsPortActive( pActInfo, EIP_COPY ) ) { view->GetView()->Copy(); } if ( IsPortActive( pActInfo, EIP_GETLOADING ) ) { ActivateOutput<bool>( pActInfo, EOP_LOADING, view->GetView()->IsLoading() ); } /* if ( IsPortActive( pActInfo, EIP_GETTITLE ) ) { ActivateOutput<string>( pActInfo, EOP_TITLE, view->GetView()->title().data ); } if ( IsPortActive( pActInfo, EIP_GETURL ) ) { ActivateOutput<string>( pActInfo, EOP_TITLE, view->GetView()->url().path ); } */ if ( IsPortActive( pActInfo, EIP_GOBACK ) ) { view->GetView()->GoBack(); } if ( IsPortActive( pActInfo, EIP_GOFORWARD ) ) { view->GetView()->GoForward(); } if ( IsPortActive( pActInfo, EIP_PASTE ) ) { view->GetView()->Paste(); } if ( IsPortActive( pActInfo, EIP_REDO ) ) { view->GetView()->Redo(); } if ( IsPortActive( pActInfo, EIP_REFRESH ) ) { view->GetView()->Reload( true ); } if ( IsPortActive( pActInfo, EIP_RESIZE ) ) { view->GetView()->Resize( GetPortInt( pActInfo, EIP_WIDTH ), GetPortInt( pActInfo, EIP_HEIGHT ) ); } if ( IsPortActive( pActInfo, EIP_SELECTALL ) ) { view->GetView()->SelectAll(); } if ( IsPortActive( pActInfo, EIP_STOP ) ) { view->GetView()->Stop(); } if ( IsPortActive( pActInfo, EIP_UNDO ) ) { view->GetView()->Undo(); } } break; } }