Beispiel #1
0
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();
}
Beispiel #2
0
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;
}
Beispiel #3
0
void ReadableStream::close()
{
    m_state = State::Closed;
    releaseReader();
}