void TLSSocket::EvaluateResult(int result) { switch (SSL_get_error(session, result)) { case SSL_ERROR_WANT_READ : case SSL_ERROR_WANT_WRITE : { break; } case SSL_ERROR_SSL : { throw TLSProtocolError(); } case SSL_ERROR_ZERO_RETURN : { throw EndOfStream(); } case SSL_ERROR_SYSCALL : { int error = ERR_get_error(); if (error) throw TLSProtocolError(); else if (!result) throw EndOfStream(); else if (result == -1) throw TLSSystemError(errno); } default : { throw TLSError(); } } }
char32_t StdFileInput::Peek() { if (EndOfStream()) return std::char_traits<char32_t>::eof(); if (!_cp_ready) _get(); return _cp; }
char32_t StdFileInput::Next() { if (!_cp_ready) _get(); if (EndOfStream()) return std::char_traits<char32_t>::eof(); _cp_ready = false; _position += 1; return _cp; }
/* End of MP3 Playback */ static PyObject *pspmp3_endofstream(PyObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "")) return NULL; if (EndOfStream() == 1) { return Py_BuildValue("i", 1); } else { return Py_BuildValue("i", 0); } Py_INCREF(Py_None); return Py_None; }
size_t TCPSocket::Read(char* buffer, size_t bufferSize) { if (tls.get()) return tls->Read(buffer, bufferSize); ssize_t result; while ((result = read(socket, buffer, bufferSize)) < 0) { boost::this_thread::interruption_point(); if (errno != EINTR) { if (errno == EWOULDBLOCK || errno == EAGAIN || errno == ETIMEDOUT) throw TimeoutError(); else throw NetworkSystemError(errno); } } boost::this_thread::interruption_point(); if (!result) throw EndOfStream(); return result; }
void CPullPin::Process(void) { // is there anything to do? if (m_tStop <= m_tStart) { EndOfStream(); return; } BOOL bDiscontinuity = TRUE; // if there is more than one sample at the allocator, // then try to queue 2 at once in order to overlap. // -- get buffer count and required alignment ALLOCATOR_PROPERTIES Actual; HRESULT hr = m_pAlloc->GetProperties(&Actual); // align the start position downwards REFERENCE_TIME tStart = AlignDown(m_tStart / UNITS, Actual.cbAlign) * UNITS; REFERENCE_TIME tCurrent = tStart; REFERENCE_TIME tStop = m_tStop; if (tStop > m_tDuration) { tStop = m_tDuration; } // align the stop position - may be past stop, but that // doesn't matter REFERENCE_TIME tAlignStop = AlignUp(tStop / UNITS, Actual.cbAlign) * UNITS; DWORD dwRequest; if (!m_bSync) { // Break out of the loop either if we get to the end or we're asked // to do something else while (tCurrent < tAlignStop) { // Break out without calling EndOfStream if we're asked to // do something different if (CheckRequest(&dwRequest)) { return; } // queue a first sample if (Actual.cBuffers > 1) { hr = QueueSample(tCurrent, tAlignStop, TRUE); bDiscontinuity = FALSE; if (FAILED(hr)) { return; } } // loop queueing second and waiting for first.. while (tCurrent < tAlignStop) { hr = QueueSample(tCurrent, tAlignStop, bDiscontinuity); bDiscontinuity = FALSE; if (FAILED(hr)) { return; } hr = CollectAndDeliver(tStart, tStop); if (S_OK != hr) { // stop if error, or if downstream filter said // to stop. return; } } if (Actual.cBuffers > 1) { hr = CollectAndDeliver(tStart, tStop); if (FAILED(hr)) { return; } } } } else { // sync version of above loop while (tCurrent < tAlignStop) { // Break out without calling EndOfStream if we're asked to // do something different if (CheckRequest(&dwRequest)) { return; } IMediaSample* pSample; hr = m_pAlloc->GetBuffer(&pSample, NULL, NULL, 0); if (FAILED(hr)) { OnError(hr); return; } LONGLONG tStopThis = tCurrent + (pSample->GetSize() * UNITS); if (tStopThis > tAlignStop) { tStopThis = tAlignStop; } pSample->SetTime(&tCurrent, &tStopThis); tCurrent = tStopThis; if (bDiscontinuity) { pSample->SetDiscontinuity(TRUE); bDiscontinuity = FALSE; } hr = m_pReader->SyncReadAligned(pSample); if (FAILED(hr)) { pSample->Release(); OnError(hr); return; } hr = DeliverSample(pSample, tStart, tStop); if (hr != S_OK) { if (FAILED(hr)) { OnError(hr); } return; } } } EndOfStream(); }
SCERROR StreamedDataSource::PeekError() const { SCERROR e = is_->PeekError(); return e!=SCE_OK ? e : EndOfStream() ? SCE_EOF : SCE_OK; }
HRESULT CWMPEventDispatch::Invoke( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult, EXCEPINFO FAR* pExcepInfo, unsigned int FAR* puArgErr ) { if (!pDispParams) return E_POINTER; if (pDispParams->cNamedArgs != 0) return DISP_E_NONAMEDARGS; HRESULT hr = DISP_E_MEMBERNOTFOUND; switch (dispIdMember) { case DISPID_WMPCOREEVENT_OPENSTATECHANGE: OpenStateChange(pDispParams->rgvarg[0].lVal /* NewState */ ); break; case DISPID_WMPCOREEVENT_PLAYSTATECHANGE: PlayStateChange(pDispParams->rgvarg[0].lVal /* NewState */); break; case DISPID_WMPCOREEVENT_AUDIOLANGUAGECHANGE: AudioLanguageChange(pDispParams->rgvarg[0].lVal /* LangID */); break; case DISPID_WMPCOREEVENT_STATUSCHANGE: StatusChange(); break; case DISPID_WMPCOREEVENT_SCRIPTCOMMAND: ScriptCommand(pDispParams->rgvarg[1].bstrVal /* scType */, pDispParams->rgvarg[0].bstrVal /* Param */ ); break; case DISPID_WMPCOREEVENT_NEWSTREAM: NewStream(); break; case DISPID_WMPCOREEVENT_DISCONNECT: Disconnect(pDispParams->rgvarg[0].lVal /* Result */ ); break; case DISPID_WMPCOREEVENT_BUFFERING: Buffering(pDispParams->rgvarg[0].boolVal /* Start */); break; case DISPID_WMPCOREEVENT_ERROR: Error(); break; case DISPID_WMPCOREEVENT_WARNING: Warning(pDispParams->rgvarg[1].lVal /* WarningType */, pDispParams->rgvarg[0].lVal /* Param */, pDispParams->rgvarg[2].bstrVal /* Description */); break; case DISPID_WMPCOREEVENT_ENDOFSTREAM: EndOfStream(pDispParams->rgvarg[0].lVal /* Result */ ); break; case DISPID_WMPCOREEVENT_POSITIONCHANGE: PositionChange(pDispParams->rgvarg[1].dblVal /* oldPosition */, pDispParams->rgvarg[0].dblVal /* newPosition */); break; case DISPID_WMPCOREEVENT_MARKERHIT: MarkerHit(pDispParams->rgvarg[0].lVal /* MarkerNum */); break; case DISPID_WMPCOREEVENT_DURATIONUNITCHANGE: DurationUnitChange(pDispParams->rgvarg[0].lVal /* NewDurationUnit */); break; case DISPID_WMPCOREEVENT_CDROMMEDIACHANGE: CdromMediaChange(pDispParams->rgvarg[0].lVal /* CdromNum */); break; case DISPID_WMPCOREEVENT_PLAYLISTCHANGE: PlaylistChange(pDispParams->rgvarg[1].pdispVal /* Playlist */, (WMPPlaylistChangeEventType) pDispParams->rgvarg[0].lVal /* change */); break; case DISPID_WMPCOREEVENT_CURRENTPLAYLISTCHANGE: CurrentPlaylistChange((WMPPlaylistChangeEventType) pDispParams->rgvarg[0].lVal /* change */); break; case DISPID_WMPCOREEVENT_CURRENTPLAYLISTITEMAVAILABLE: CurrentPlaylistItemAvailable(pDispParams->rgvarg[0].bstrVal /* bstrItemName */); break; case DISPID_WMPCOREEVENT_MEDIACHANGE: MediaChange(pDispParams->rgvarg[0].pdispVal /* Item */); break; case DISPID_WMPCOREEVENT_CURRENTMEDIAITEMAVAILABLE: CurrentMediaItemAvailable(pDispParams->rgvarg[0].bstrVal /* bstrItemName */); break; case DISPID_WMPCOREEVENT_CURRENTITEMCHANGE: CurrentItemChange(pDispParams->rgvarg[0].pdispVal /* pdispMedia */); break; case DISPID_WMPCOREEVENT_MEDIACOLLECTIONCHANGE: MediaCollectionChange(); break; case DISPID_WMPCOREEVENT_MEDIACOLLECTIONATTRIBUTESTRINGADDED: MediaCollectionAttributeStringAdded(pDispParams->rgvarg[1].bstrVal /* bstrAttribName */, pDispParams->rgvarg[0].bstrVal /* bstrAttribVal */ ); break; case DISPID_WMPCOREEVENT_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED: MediaCollectionAttributeStringRemoved(pDispParams->rgvarg[1].bstrVal /* bstrAttribName */, pDispParams->rgvarg[0].bstrVal /* bstrAttribVal */ ); break; case DISPID_WMPCOREEVENT_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED: MediaCollectionAttributeStringChanged(pDispParams->rgvarg[2].bstrVal /* bstrAttribName */, pDispParams->rgvarg[1].bstrVal /* bstrOldAttribVal */, pDispParams->rgvarg[0].bstrVal /* bstrNewAttribVal */); break; case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONCHANGE: PlaylistCollectionChange(); break; case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONPLAYLISTADDED: PlaylistCollectionPlaylistAdded(pDispParams->rgvarg[0].bstrVal /* bstrPlaylistName */ ); break; case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONPLAYLISTREMOVED: PlaylistCollectionPlaylistRemoved(pDispParams->rgvarg[0].bstrVal /* bstrPlaylistName */ ); break; case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED: PlaylistCollectionPlaylistSetAsDeleted(pDispParams->rgvarg[1].bstrVal /* bstrPlaylistName */, pDispParams->rgvarg[0].boolVal /* varfIsDeleted */); break; case DISPID_WMPCOREEVENT_MODECHANGE: ModeChange(pDispParams->rgvarg[1].bstrVal /* ModeName */, pDispParams->rgvarg[0].boolVal /* NewValue */); break; case DISPID_WMPCOREEVENT_MEDIAERROR: MediaError(pDispParams->rgvarg[0].pdispVal /* pMediaObject */); break; case DISPID_WMPCOREEVENT_OPENPLAYLISTSWITCH: OpenPlaylistSwitch(pDispParams->rgvarg[0].pdispVal /* pItem */); break; case DISPID_WMPCOREEVENT_DOMAINCHANGE: DomainChange(pDispParams->rgvarg[0].bstrVal /* strDomain */); break; case DISPID_WMPOCXEVENT_SWITCHEDTOPLAYERAPPLICATION: SwitchedToPlayerApplication(); break; case DISPID_WMPOCXEVENT_SWITCHEDTOCONTROL: SwitchedToControl(); break; case DISPID_WMPOCXEVENT_PLAYERDOCKEDSTATECHANGE: PlayerDockedStateChange(); break; case DISPID_WMPOCXEVENT_PLAYERRECONNECT: PlayerReconnect(); break; case DISPID_WMPOCXEVENT_CLICK: Click(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */); break; case DISPID_WMPOCXEVENT_DOUBLECLICK: DoubleClick(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */); break; case DISPID_WMPOCXEVENT_KEYDOWN: KeyDown(pDispParams->rgvarg[1].iVal /* nKeyCode */, pDispParams->rgvarg[0].iVal /* nShiftState */); break; case DISPID_WMPOCXEVENT_KEYPRESS: KeyPress(pDispParams->rgvarg[0].iVal /* nKeyAscii */); break; case DISPID_WMPOCXEVENT_KEYUP: KeyUp(pDispParams->rgvarg[1].iVal /* nKeyCode */, pDispParams->rgvarg[0].iVal /* nShiftState */); break; case DISPID_WMPOCXEVENT_MOUSEDOWN: MouseDown(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */); break; case DISPID_WMPOCXEVENT_MOUSEMOVE: MouseMove(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */); break; case DISPID_WMPOCXEVENT_MOUSEUP: MouseUp(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */); break; } return( hr ); }