本文整理汇总了C++中ThreadableWebSocketChannelClientWrapper::sendRequestResult方法的典型用法代码示例。如果您正苦于以下问题:C++ ThreadableWebSocketChannelClientWrapper::sendRequestResult方法的具体用法?C++ ThreadableWebSocketChannelClientWrapper::sendRequestResult怎么用?C++ ThreadableWebSocketChannelClientWrapper::sendRequestResult使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ThreadableWebSocketChannelClientWrapper
的用法示例。
在下文中一共展示了ThreadableWebSocketChannelClientWrapper::sendRequestResult方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memcpy
ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(const ArrayBuffer& binaryData, unsigned byteOffset, unsigned byteLength)
{
if (!m_workerClientWrapper || !m_peer)
return ThreadableWebSocketChannel::SendFail;
// ArrayBuffer isn't thread-safe, hence the content of ArrayBuffer is copied into Vector<char>.
Vector<char>* dataPtr = std::make_unique<Vector<char>>(byteLength).release();
if (binaryData.byteLength())
memcpy(dataPtr->data(), static_cast<const char*>(binaryData.data()) + byteOffset, byteLength);
setMethodNotCompleted();
Peer* peer = m_peer;
m_loaderProxy.postTaskToLoader([peer, dataPtr] (ScriptExecutionContext& context) {
ASSERT(isMainThread());
ASSERT_UNUSED(context, context.isDocument());
ASSERT(peer);
std::unique_ptr<Vector<char>> data(dataPtr);
RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(data->data(), data->size());
peer->send(*arrayBuffer);
});
Ref<Bridge> protect(*this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
if (!clientWrapper)
return ThreadableWebSocketChannel::SendFail;
return clientWrapper->sendRequestResult();
}
示例2: capturedURL
ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(Blob& binaryData)
{
if (!m_workerClientWrapper || !m_peer)
return ThreadableWebSocketChannel::SendFail;
setMethodNotCompleted();
Peer* peer = m_peer;
URLCapture capturedURL(binaryData.url());
StringCapture capturedType(binaryData.type());
long long size = binaryData.size();
m_loaderProxy.postTaskToLoader([peer, capturedURL, capturedType, size] (ScriptExecutionContext& context) {
ASSERT(isMainThread());
ASSERT_UNUSED(context, context.isDocument());
ASSERT(peer);
peer->send(Blob::deserialize(capturedURL.url(), capturedType.string(), size));
});
Ref<Bridge> protect(*this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
if (!clientWrapper)
return ThreadableWebSocketChannel::SendFail;
return clientWrapper->sendRequestResult();
}
示例3: setMethodNotCompleted
ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(Blob& binaryData)
{
if (!m_workerClientWrapper || !m_peer)
return ThreadableWebSocketChannel::SendFail;
setMethodNotCompleted();
Peer* peer = m_peer;
URL urlCopy = binaryData.url().copy();
String typeCopy = binaryData.type().isolatedCopy();
long long size = binaryData.size();
m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext& context) {
ASSERT(isMainThread());
ASSERT_UNUSED(context, context.isDocument());
ASSERT(peer);
RefPtr<Blob> blob = Blob::deserialize(urlCopy, typeCopy, size);
peer->send(*blob);
});
Ref<Bridge> protect(*this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
if (!clientWrapper)
return ThreadableWebSocketChannel::SendFail;
return clientWrapper->sendRequestResult();
}
示例4: ASSERT
bool WorkerThreadableWebSocketChannel::Bridge::send(const Blob& binaryData)
{
if (!m_workerClientWrapper)
return false;
ASSERT(m_peer);
setMethodNotCompleted();
m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSendBlob, AllowCrossThreadAccess(m_peer), binaryData.url(), binaryData.type(), binaryData.size()));
RefPtr<Bridge> protect(this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
return clientWrapper && clientWrapper->sendRequestResult();
}
示例5: ASSERT
ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(const String& message)
{
if (!m_workerClientWrapper)
return ThreadableWebSocketChannel::SendFail;
ASSERT(m_peer);
setMethodNotCompleted();
m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadSend, AllowCrossThreadAccess(m_peer), message));
RefPtr<Bridge> protect(this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
if (!clientWrapper)
return ThreadableWebSocketChannel::SendFail;
return clientWrapper->sendRequestResult();
}
示例6: capturedMessage
ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(const String& message)
{
if (!m_workerClientWrapper || !m_peer)
return ThreadableWebSocketChannel::SendFail;
setMethodNotCompleted();
Peer* peer = m_peer;
StringCapture capturedMessage(message);
m_loaderProxy.postTaskToLoader([peer, capturedMessage] (ScriptExecutionContext& context) {
ASSERT(isMainThread());
ASSERT_UNUSED(context, context.isDocument());
ASSERT(peer);
peer->send(capturedMessage.string());
});
Ref<Bridge> protect(*this);
waitForMethodCompletion();
ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
if (!clientWrapper)
return ThreadableWebSocketChannel::SendFail;
return clientWrapper->sendRequestResult();
}