/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/coroutine/engine/helper.cpp
37 строк
1012 B
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#include "helper.h" #include "impl.h" #include "network.h" namespace NCoro { bool TryConnect(const TString& host, ui16 port, TDuration timeout) { bool connected = false; auto f = [&connected, &host, port, timeout](TCont* c) { TSocketHolder socket; TNetworkAddress address(host, port); connected = (0 == NCoro::ConnectT(c, socket, address, timeout)); }; TContExecutor e(128 * 1024); e.Create(f, "try_connect"); e.Execute(); return connected; } bool WaitUntilConnectable(const TString& host, ui16 port, TDuration timeout) { const TInstant deadline = timeout.ToDeadLine(); for (size_t i = 1; Now() < deadline; ++i) { const TDuration waitTime = TDuration::MilliSeconds(100) * i * i; SleepUntil(Min(Now() + waitTime, deadline)); if (TryConnect(host, port, waitTime)) { return true; } } return false; } }