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

Method assignTo

Libraries/Http/HttpConnection.cpp:1470–1509  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1468}
1469
1470Result HttpConnectionsPool::Memory::assignTo(HttpConnectionsPool::Configuration conf,
1471 SpanWithStride<HttpConnection> connectionsSpan)
1472{
1473 const size_t numClients = connectionsSpan.sizeInElements();
1474 SC_TRY_MSG(allReadQueue.sizeInElements() >= numClients * conf.readQueueSize, "Insufficient read queue");
1475 SC_TRY_MSG(allWriteQueue.sizeInElements() >= numClients * conf.writeQueueSize, "Insufficient write queue");
1476 SC_TRY_MSG(allBuffers.sizeInElements() >= numClients * conf.buffersQueueSize, "Insufficient buffers queue");
1477 SC_TRY_MSG(allHeaders.sizeInElements() >= numClients * conf.headerBytesLength, "Insufficient headers storage");
1478 SC_TRY_MSG(allStreams.sizeInElements() >= numClients * conf.streamBytesLength, "Insufficient streams storage");
1479 for (size_t idx = 0; idx < numClients; ++idx)
1480 {
1481 HttpConnection& connection = connectionsSpan[idx];
1482
1483 const size_t NumSlices = conf.readQueueSize;
1484 const size_t SliceLength = conf.streamBytesLength / NumSlices;
1485
1486 Span<AsyncBufferView> buffers;
1487 SC_TRY(allBuffers.sliceStartLength(idx * conf.buffersQueueSize, conf.buffersQueueSize, buffers));
1488 Span<char> streamStorage;
1489 SC_TRY(allStreams.sliceStartLength(idx * conf.streamBytesLength, conf.streamBytesLength, streamStorage));
1490 for (size_t sliceIdx = 0; sliceIdx < NumSlices; ++sliceIdx)
1491 {
1492 Span<char> slice;
1493 SC_TRY(streamStorage.sliceStartLength(sliceIdx * SliceLength, SliceLength, slice));
1494 buffers[sliceIdx] = slice;
1495 buffers[sliceIdx].setReusable(true);
1496 }
1497 connection.buffersPool.setBuffers(buffers);
1498 Span<char> headerStorage;
1499 SC_TRY(allHeaders.sliceStartLength(idx * conf.headerBytesLength, conf.headerBytesLength, headerStorage));
1500 connection.setHeaderMemory(headerStorage);
1501 Span<AsyncReadableStream::Request> readQueue;
1502 SC_TRY(allReadQueue.sliceStartLength(idx * conf.readQueueSize, conf.readQueueSize, readQueue));
1503 Span<AsyncWritableStream::Request> writeQueue;
1504 SC_TRY(allWriteQueue.sliceStartLength(idx * conf.writeQueueSize, conf.writeQueueSize, writeQueue));
1505 connection.readableSocketStream.setReadQueue(readQueue);
1506 connection.writableSocketStream.setWriteQueue(writeQueue);
1507 }
1508 return Result(true);
1509}
1510} // namespace SC

Callers 3

Calls 2

setHeaderMemoryMethod · 0.80
ResultClass · 0.50

Tested by

no test coverage detected