| 447 | }; |
| 448 | |
| 449 | TUdpHost::TUdpHost(float udpTransferTimeout) |
| 450 | : S(UDP_MAX_PACKETS_IN_QUEUE, true) |
| 451 | , NewPacketsAfterLastFlush(0) |
| 452 | , CurrentT(0) |
| 453 | , IsWaiting(0) |
| 454 | , MaxWaitTime(DEFAULT_MAX_WAIT_TIME) |
| 455 | , MaxWaitTime2(DEFAULT_MAX_WAIT_TIME) |
| 456 | , IBIdleTime(0) |
| 457 | , TotalPendingDataStats(new TRequesterPendingDataStats) |
| 458 | , TimeSinceSocketStatsUpdate(0) |
| 459 | , UdpTransferTimeout(Min(UDP_TRANSFER_TIMEOUT, udpTransferTimeout)) |
| 460 | , UdpHostThread(TThread::TParams(ExecServerThread, (void*)this).SetName("nl12_udp_host")) |
| 461 | , Run(1) |
| 462 | , TXUserQueue([this](TConnection* connection) { ConnectLow(connection); }, |
| 463 | [this](const TTransfer& transfer, TAutoPtr<TRopeDataPacket> data, |
| 464 | EPacketPriority pp, const TTos& tos, ui8 netlibaColor) { SendLow(transfer, data, pp, tos, netlibaColor); }, |
| 465 | [this](const TTransfer& transfer) { CancelLow(transfer); }) { |
| 466 | } |
| 467 | |
| 468 | void* TUdpHost::ExecServerThread(void* param) { |
| 469 | TUdpHost* pThis = reinterpret_cast<TUdpHost*>(param); |