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

Method requestNewBuffer

Libraries/AsyncStreams/AsyncStreams.cpp:146–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144}
145
146Result AsyncBuffersPool::requestNewBuffer(size_t minimumSizeInBytes, AsyncBufferView::ID& bufferID, Span<char>& data)
147{
148 for (AsyncBufferView& buffer : buffers)
149 {
150 if (buffer.type == AsyncBufferView::Type::Empty)
151 continue;
152 if (buffer.refs == 0)
153 {
154 if (buffer.type == AsyncBufferView::Type::Growable)
155 {
156 AsyncBufferView::GrowableStorage storage;
157
158 auto da = buffer.getGrowableBuffer(storage, true)->getDirectAccess();
159 buffer.writableData = {static_cast<char*>(da.data), da.sizeInBytes};
160 (void)buffer.getGrowableBuffer(storage, false); // destruct
161 }
162 if (buffer.writableData.sizeInBytes() >= minimumSizeInBytes)
163 {
164 buffer.refs = 1;
165 buffer.offset = 0;
166 buffer.length = buffer.writableData.sizeInBytes();
167
168 bufferID =
169 AsyncBufferView::ID(static_cast<AsyncBufferView::ID::NumericType>(&buffer - buffers.begin()));
170 return getWritableData(bufferID, data);
171 }
172 }
173 }
174 return Result::Error("AsyncBuffersPool::requestNewBuffer failed");
175}
176
177void AsyncBuffersPool::setNewBufferSize(AsyncBufferView::ID bufferID, size_t newSizeInBytes)
178{

Callers 11

writeNextMethod · 0.80
connectionPumpMethod · 0.80
sendAfterUpgradeMethod · 0.80
createChildViewMethod · 0.80
unshiftMethod · 0.80
writeBroadcastFrameMethod · 0.80
onResponseBodyMethod · 0.80
sendBodyCopyMethod · 0.80
writeFrameMethod · 0.80
broadcastFrameMethod · 0.80
getBufferOrPauseMethod · 0.80

Calls 4

IDFunction · 0.85
ErrorEnum · 0.50
sizeInBytesMethod · 0.45
beginMethod · 0.45

Tested by 5

writeNextMethod · 0.64
connectionPumpMethod · 0.64
sendAfterUpgradeMethod · 0.64
createChildViewMethod · 0.64
unshiftMethod · 0.64