diff options
| author | vvvv <[email protected]> | 2024-11-01 15:41:40 +0300 |
|---|---|---|
| committer | vvvv <[email protected]> | 2024-11-01 15:55:52 +0300 |
| commit | 3325f745e67f7f442790822b5c9c5e9996708be7 (patch) | |
| tree | f7318d68bbe8990092715436444b05297ce35777 /yql/essentials/utils/network/bind_in_range.cpp | |
| parent | 6dce3f1c71786f2694b73b1a5155efc58f4557dd (diff) | |
Moved yql/utils YQL-19206
Также была выделена жирная зависимость из yql/utils в yql/utils/network, в результате library/cpp/getopt была добавлена явно в те проекты, которые ее ранее наследовали, а не указывали явно
commit_hash:36aa4c41f807b4cbbf70a3ed7ac0a1a5079bb75d
Diffstat (limited to 'yql/essentials/utils/network/bind_in_range.cpp')
| -rw-r--r-- | yql/essentials/utils/network/bind_in_range.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/yql/essentials/utils/network/bind_in_range.cpp b/yql/essentials/utils/network/bind_in_range.cpp new file mode 100644 index 00000000000..88cf641ce39 --- /dev/null +++ b/yql/essentials/utils/network/bind_in_range.cpp @@ -0,0 +1,27 @@ +#include "bind_in_range.h" + +#include <yql/essentials/utils/log/log.h> +#include <util/datetime/base.h> + +namespace NYql { + +TVector<NBus::TBindResult> BindInRange(TRangeWalker<int>& portWalker) { + const int cyclesLimit = 3; + const int rangeSize = portWalker.GetRangeSize(); + const auto cycleDelay = TDuration::Seconds(3); + + for (int cycle = 0; cycle < cyclesLimit; ++cycle) { + for (int i = 0; i < rangeSize; ++i) { + try { + return NBus::BindOnPort(portWalker.MoveToNext(), false).second; + } catch (const TSystemError&) { + YQL_LOG(DEBUG) << CurrentExceptionMessage(); + } + } + + Sleep(cycleDelay); + } + + ythrow yexception() << "Unable to bind within port range [" << portWalker.GetStart() << ", " << portWalker.GetFinish() << "]"; +} +} |
