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

Method TTryToRecvMMsgSocket

library/cpp/netliba/socket/socket.cpp:656–687  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

654 };
655
656 TTryToRecvMMsgSocket::TTryToRecvMMsgSocket(const size_t recvQueueSize)
657 : RecvPacketsBegin(0)
658 , RecvPacketsHeadersEnd(0)
659 {
660 // recvmmsg is not supported - will act like TSocket,
661 // we can't just VERIFY - TTryToRecvMMsgSocket is used as base class for TDualStackSocket.
662 if (!IsRecvMMsgSupported()) {
663 RecvPackets.reserve(1);
664 RecvPackets.PushBack(new TUdpHostRecvBufAlloc);
665 return;
666 }
667
668 RecvPackets.reserve(recvQueueSize);
669 for (size_t i = 0; i != recvQueueSize; ++i) {
670 RecvPackets.PushBack(new TUdpHostRecvBufAlloc);
671 }
672
673 RecvPacketsSrcAddresses.resize(recvQueueSize);
674 RecvPacketsIoVecs.resize(recvQueueSize);
675 RecvPacketsHeaders.resize(recvQueueSize);
676 RecvPacketsCtrlBuffers.resize(recvQueueSize);
677
678 for (size_t i = 0; i != recvQueueSize; ++i) {
679 TMMsgHdr& mhdr = RecvPacketsHeaders[i];
680 Zero(mhdr);
681
682 RecvPacketsIoVecs[i] = CreateIoVec(RecvPackets[i]->GetDataPtr(), RecvPackets[i]->GetBufSize());
683 char* buf = RecvPacketsCtrlBuffers[i].data();
684 memset(buf, 0, CTRL_BUFFER_SIZE);
685 mhdr.msg_hdr = CreateRecvMsgHdr(&RecvPacketsSrcAddresses[i], RecvPacketsIoVecs[i], buf);
686 }
687 }
688
689 TTryToRecvMMsgSocket::~TTryToRecvMMsgSocket() {
690 Close();

Callers

nothing calls this directly

Calls 9

ZeroFunction · 0.85
CreateIoVecFunction · 0.85
CreateRecvMsgHdrFunction · 0.85
reserveMethod · 0.45
PushBackMethod · 0.45
resizeMethod · 0.45
GetDataPtrMethod · 0.45
GetBufSizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected