本文整理汇总了C++中buffer_ptr_t::getMutex方法的典型用法代码示例。如果您正苦于以下问题:C++ buffer_ptr_t::getMutex方法的具体用法?C++ buffer_ptr_t::getMutex怎么用?C++ buffer_ptr_t::getMutex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buffer_ptr_t
的用法示例。
在下文中一共展示了buffer_ptr_t::getMutex方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: completedRaw
void XMLRPCResponder::completedRaw(U32 status, std::string const& reason, LLChannelDescriptors const& channels, buffer_ptr_t const& buffer)
{
if (mCode == CURLE_OK && !is_internal_http_error(status))
{
mBufferSize = buffer->count(channels.in());
if (200 <= status && status < 400)
{
char* ptr = NULL;
char* buf = NULL;
LLMutexLock lock(buffer->getMutex());
LLBufferArray::const_segment_iterator_t const end = buffer->endSegment();
for (LLBufferArray::const_segment_iterator_t iter = buffer->beginSegment(); iter != end; ++iter)
{
LLSegment const& segment = *iter;
if (segment.isOnChannel(channels.in()))
{
S32 const segment_size = segment.size();
if (!buf)
{
if (segment_size == mBufferSize)
{
// It's contiguous, no need for copying.
mResponse = XMLRPC_REQUEST_FromXML((char const*)segment.data(), mBufferSize, NULL);
break;
}
ptr = buf = new char [mBufferSize];
}
llassert(ptr + segment_size <= buf + mBufferSize);
memcpy(ptr, segment.data(), segment_size);
ptr += segment_size;
}
}
if (buf)
{
mResponse = XMLRPC_REQUEST_FromXML(buf, mBufferSize, NULL);
delete [] buf;
}
}
}
}