int CIOCPFileAccessor::Update(int ProcessPacketLimit) { int PacketCount1=0; int PacketCount2=0; COverLappedObject * pOverLappedObject; while(m_DataQueue.PopFront(pOverLappedObject)) { if(pOverLappedObject->GetType()==IO_FILE_READ) { ULONG64_CONVERTER ReadOffset; ReadOffset.HighPart=pOverLappedObject->GetOverlapped()->OffsetHigh; ReadOffset.LowPart=pOverLappedObject->GetOverlapped()->Offset; OnReadData(ReadOffset.QuadPart,*(pOverLappedObject->GetDataBuff())); } else { ULONG64_CONVERTER WriteOffset; WriteOffset.HighPart=pOverLappedObject->GetOverlapped()->OffsetHigh; WriteOffset.LowPart=pOverLappedObject->GetOverlapped()->Offset; OnWriteData(WriteOffset.QuadPart,*(pOverLappedObject->GetDataBuff())); } GetServer()->DeleteOverLappedObject(pOverLappedObject); PacketCount1++; if(PacketCount1>=ProcessPacketLimit) break; } FIOCP_ERROR_INFO ErrorInfo; while(m_ErrorQueue.PopFront(ErrorInfo)) { OnError(ErrorInfo.ErrorType,ErrorInfo.ErrorCode,ErrorInfo.QueryType,ErrorInfo.QueryPos,ErrorInfo.QuerySize); PacketCount2++; if(PacketCount2>=ProcessPacketLimit) break; } if(m_WantClose) { Close(); } return PacketCount1+PacketCount2; }
int CRealMediaObj::Process(J_AsioDataBase &asioData) { int nRet = J_OK; J_CommandFilter *videoCommand = dynamic_cast<J_CommandFilter *>(m_pObj); if (videoCommand != NULL) { if (asioData.ioCall == J_AsioDataBase::j_read_e) { m_resid = videoCommand->GetResid(); switch (videoCommand->GetCommandType()) { case jo_start_real: nRet = StartVideo(); J_OS::LOGINFO("CRealMediaObj::Process StartVideo socket = %d ret = %d", m_nSocket.sock, nRet); break; case jo_stop_real: { nRet = StopVideo(); J_OS::LOGINFO("CRealMediaObj::Process StopVideo socket = %d ret = %d", m_nSocket.sock, nRet); break; } default: J_OS::LOGINFO("CRealMediaObj::Process CommandType unkown type = %d", videoCommand->GetCommandType()); break; } } else if (asioData.ioCall == J_AsioDataBase::j_write_e) { if (!m_bStart) { J_OS::LOGINFO("CRealMediaObj::Process !m_bStart socket = %d", m_nSocket.sock); return J_OK; } return OnWriteData(asioData); } } return nRet; }