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

Method GetPacketBuffer

library/cpp/netliba/v12/udp_host.cpp:851–871  ·  view source on GitHub ↗

Tries to get packet buffer in non-blocking way for given transfer returns std::pair if _current_ transfer was removed during FlushPackets() or buffer ovrflow for _any_ transfers

Source from the content-addressed store, hash-verified

849 // Tries to get packet buffer in non-blocking way for given transfer
850 // returns std::pair<nullptr, err> if _current_ transfer was removed during FlushPackets() or buffer ovrflow for _any_ transfers
851 std::pair<char*, ui8> TUdpHost::GetPacketBuffer(const size_t bufSize, const TConnection* connection, const ui64 id) {
852 Y_ASSERT(connection);
853 ui8 err = TUdpHost::EFlashPacketResult::FPR_OK;
854 // if small packet optimization is enabled then there could be thousands of packets added before we reach max udp packets in queue
855 if (++NewPacketsAfterLastFlush > UDP_MAX_NEW_PACKETS_BEFORE_FORCED_FLUSH) {
856 //printf("TUdpHost::GetPacketBuffer: too many small packets added, flushing\n");
857 err = FlushPacketsAndCheck(connection, id);
858 if (err)
859 return std::make_pair(nullptr, err);
860 }
861
862 char* msgBuf = S.NewPacketBuffer(bufSize);
863 if (!msgBuf) {
864 err = FlushPacketsAndCheck(connection, id);
865 if (err)
866 return std::make_pair(nullptr, err);
867
868 msgBuf = S.NewPacketBuffer(bufSize);
869 }
870 return std::make_pair(msgBuf, err);
871 }
872
873 // ui8 - error bitmap
874 // FPR_OVERFLOW - there were non-sent packets because of udp/kernel buffer overflow.

Callers

nothing calls this directly

Calls 1

NewPacketBufferMethod · 0.80

Tested by

no test coverage detected