MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / pushBuffer

Method pushBuffer

Libraries/AsyncStreams/AsyncStreams.cpp:226–247  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

224}
225
226Result AsyncBuffersPool::pushBuffer(AsyncBufferView&& buffer, AsyncBufferView::ID& bufferID)
227{
228 for (size_t idx = 0; idx < buffers.sizeInElements(); ++idx)
229 {
230 if (buffers[idx].getType() == AsyncBufferView::Type::Empty)
231 {
232 if (buffer.type == AsyncBufferView::Type::Growable and buffer.length == 0)
233 {
234 AsyncBufferView::GrowableStorage storage;
235
236 auto da = buffer.getGrowableBuffer(storage, true)->getDirectAccess();
237 buffer.length = da.sizeInBytes;
238 (void)buffer.getGrowableBuffer(storage, false); // destruct
239 }
240 buffer.refs = 0;
241 buffers[idx] = move(buffer);
242 bufferID = AsyncBufferView::ID(static_cast<AsyncBufferView::ID::NumericType>(idx));
243 return Result(true);
244 }
245 }
246 return Result::Error("pushBuffer failed");
247}
248
249Result AsyncBuffersPool::sliceInEqualParts(Span<AsyncBufferView> buffers, Span<char> memory, size_t numSlices)
250{

Callers 3

initMethod · 0.80
initMethod · 0.80
writeMethod · 0.80

Calls 4

IDFunction · 0.85
ResultClass · 0.50
ErrorEnum · 0.50
getTypeMethod · 0.45

Tested by 2

initMethod · 0.64
initMethod · 0.64