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

Method RecvCycle

library/cpp/netliba/v12/udp_host.cpp:1026–1059  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1024 }
1025
1026 void TUdpHost::RecvCycle() {
1027 NHPTimer::STime now;
1028 NHPTimer::GetTime(&now);
1029 S.SetRecvLagTime(now - CurrentT);
1030 for (;;) {
1031 TSockAddrPair addr;
1032 TAutoPtr<TUdpRecvPacket> recvBuf = S.Recv(&addr);
1033 if (!recvBuf.Get()) { // no more packets in socket
1034 break;
1035 }
1036
1037 const char* payloadStart = recvBuf->Data.get() + recvBuf->DataStart;
1038 const char* payloadEnd = payloadStart + recvBuf->DataSize;
1039
1040 const char* pktData = payloadStart;
1041 EUdpCmd cmd;
1042 ui8 originalCmd;
1043 if (!ReadBasicPacketHeader(&pktData, payloadEnd, &cmd, &originalCmd)) {
1044 Y_ASSERT(false); // do not remove this yassert - it'll help you to find problems in protocol
1045 continue;
1046 }
1047 Y_ASSERT(recvBuf->DataStart != 0 || originalCmd == (ui8) * (recvBuf->Data.get() + CMD_POS));
1048 if (IsInConnectionCmd(cmd)) {
1049 ProcessInConnectionPacket(cmd, pktData, payloadEnd, originalCmd, addr.RemoteAddr, addr.MyAddr, recvBuf);
1050
1051 } else if (IsSystemCmd(cmd)) {
1052 ProcessSystemPacket(cmd, pktData, payloadEnd);
1053
1054 } else {
1055 // bug (forgotten cmd)? bad packet?
1056 Y_ASSERT(false);
1057 }
1058 }
1059 }
1060
1061 bool TUdpHost::ProcessInConnectionPacket(const EUdpCmd cmd, const char* pktData, const char* pktEnd, const ui8 originalCmd,
1062 const sockaddr_in6& fromAddress, const sockaddr_in6& dstAddress, TAutoPtr<TUdpRecvPacket> recvBuf) {

Callers

nothing calls this directly

Calls 7

ReadBasicPacketHeaderFunction · 0.85
IsInConnectionCmdFunction · 0.85
IsSystemCmdFunction · 0.85
SetRecvLagTimeMethod · 0.45
RecvMethod · 0.45
GetMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected