void ReadableStream::changeStateToErrored() { if (m_state != State::Readable) return; clearValues(); m_state = State::Errored; JSC::JSValue error = this->error(); if (m_closedPromise) m_closedPromise.value().reject(error); for (auto& request : m_readRequests) request.reject(error); clearCallbacks(); if (m_reader) releaseReader(); }
bool loadClasses(const std::string &fileName, std::vector<EmoClass> &classes) { const int len = MultiByteToWideChar(CP_UTF8, 0, fileName.c_str(), -1, 0, 0); if (len <= 0) { return false; } wchar_t *buffer = new wchar_t[len]; MultiByteToWideChar(CP_UTF8, 0, fileName.c_str(), -1, buffer, len); std::wstring wfileName(buffer); delete[] buffer; HRESULT hr = CoInitialize(0); if (FAILED(hr)) { return false; } ISAXXMLReader *reader = 0; hr = CoCreateInstance(CLSID_SAXXMLReader60, 0, CLSCTX_INPROC_SERVER, IID_ISAXXMLReader, (LPVOID*) &reader); if (FAILED(hr)) { return false; } ClassesContentHandler *handler = new ClassesContentHandler(classes); ReleaseOnExit releaseReader(*reader); ReleaseOnExit releaseHandler(*handler); hr = reader->putContentHandler(handler); if (FAILED(hr)) { return false; } hr = reader->parseURL(wfileName.c_str()); if (FAILED(hr)) { return false; } return true; }
void ReadableStream::close() { m_state = State::Closed; releaseReader(); }