MCPcopy Create free account
hub / github.com/catboost/catboost / NewPacketBuffer

Method NewPacketBuffer

library/cpp/netliba/v12/udp_socket.cpp:334–353  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

332 //////////////////////////////////////////////////////////////////////////////
333
334 char* TUdpSocket::NewPacketBuffer(const size_t maxSize) {
335 Y_ASSERT(!LastReturnedPacketBuffer && "Call AddPacketToQueue after each NewPacketBuffer!");
336 Y_ASSERT(maxSize <= UDP_PACKET_BUF_SIZE);
337 if (GetNumUdpPacketsInQueue() == MaxUdpPacketsInQueue) { // doesn't count small packets!
338 return nullptr;
339 }
340
341 // User didn't call ClearPacketsQueue after FlushPacketsQueue with partial sendmmsg.
342 if (UdpPacketsHeaders.size() == UdpPacketsHeaders.capacity()) {
343 UdpPacketsHeaders.erase(UdpPacketsHeaders.begin(), UdpPacketsHeaders.begin() + UdpPacketsHeadersBegin);
344 UdpPacketsHeadersBegin = 0;
345 }
346
347 LastReturnedPacketBuffer = PacketsDataBuffer.GetContinuousRegion(UDP_LOW_LEVEL_HEADER_SIZE + maxSize);
348 if (!LastReturnedPacketBuffer) { // may occur is small packet optimization is enabled
349 return nullptr;
350 }
351 LastReturnPacketBufferDataSize = maxSize;
352 return LastReturnedPacketBuffer + UDP_LOW_LEVEL_HEADER_SIZE;
353 }
354
355 bool TUdpSocket::TryToApplySmallPacketsOptimization(const TIoVec& v, const TSockAddrPair& addr, ui8 tos, size_t mtu) {
356 SendStat.Total++;

Callers 1

GetPacketBufferMethod · 0.80

Calls 5

GetContinuousRegionMethod · 0.80
sizeMethod · 0.45
capacityMethod · 0.45
eraseMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected