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

Method FillRecvBuffers

library/cpp/netliba/socket/socket.cpp:718–738  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

716 }
717
718 int TTryToRecvMMsgSocket::FillRecvBuffers() {
719 Y_ASSERT(IsRecvMMsgSupported());
720 Y_ASSERT(RecvPacketsBegin <= RecvPacketsHeadersEnd);
721 if (RecvPacketsBegin < RecvPacketsHeadersEnd) {
722 return RecvPacketsHeadersEnd - RecvPacketsBegin;
723 }
724
725 // no packets left from last recvmmsg call
726 for (size_t i = 0; i != RecvPacketsHeadersEnd; ++i) { // reinit only used by last recvmmsg call headers
727 RecvPacketsIoVecs[i] = CreateIoVec(RecvPackets[i]->GetDataPtr(), RecvPackets[i]->GetBufSize());
728 }
729 RecvPacketsBegin = RecvPacketsHeadersEnd = 0;
730
731 const int r = RecvMMsgImpl(&RecvPacketsHeaders[0], (unsigned int)RecvPacketsHeaders.size(), 0, nullptr);
732 if (r >= 0) {
733 RecvPacketsHeadersEnd = r;
734 } else {
735 Y_ASSERT(LastSystemError() == EAGAIN || LastSystemError() == EWOULDBLOCK);
736 }
737 return r;
738 }
739
740 // not thread-safe
741 TUdpRecvPacket* TTryToRecvMMsgSocket::Recv(sockaddr_in6* fromAddress, sockaddr_in6* dstAddr, int) {

Callers

nothing calls this directly

Calls 5

CreateIoVecFunction · 0.85
LastSystemErrorFunction · 0.85
GetDataPtrMethod · 0.45
GetBufSizeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected