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

Method Pop

library/cpp/netliba/socket/packet_queue.h:69–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67 }
68
69 bool Pop(TUdpRecvPacket** packet, sockaddr_in6* srcAddr, sockaddr_in6* dstAddr) {
70 TPacket p;
71 if (!Queue.Dequeue(p)) {
72 QueueEvent.Reset();
73 if (!Queue.Dequeue(p)) {
74 return false;
75 }
76 QueueEvent.Signal();
77 }
78 *packet = p.first;
79 *srcAddr = p.second.RemoteAddr;
80 *dstAddr = p.second.MyAddr;
81
82 AtomicSub(NumPackets, 1);
83 AtomicSub(DataSize, (*packet)->DataSize);
84 Y_ASSERT(AtomicGet(NumPackets) >= 0 && AtomicGet(DataSize) >= 0);
85
86 return true;
87 }
88
89 bool IsEmpty() const {
90 return AtomicAdd(NumPackets, 0) == 0;

Callers

nothing calls this directly

Calls 5

AtomicSubFunction · 0.50
AtomicGetFunction · 0.50
DequeueMethod · 0.45
ResetMethod · 0.45
SignalMethod · 0.45

Tested by

no test coverage detected