diff options
author | svidyuk <svidyuk@yandex-team.com> | 2022-11-14 12:03:26 +0300 |
---|---|---|
committer | svidyuk <svidyuk@yandex-team.com> | 2022-11-14 12:03:26 +0300 |
commit | 27d8c0c44daf7a5aba953248a3682667db688669 (patch) | |
tree | c7b10fe156ae6deef1d6ae19cc8ef509925ac463 /library/cpp/neh/neh.cpp | |
parent | 1d1f495e76f87ee31598b60ea254edce5e6c78f5 (diff) | |
download | ydb-27d8c0c44daf7a5aba953248a3682667db688669.tar.gz |
rework pom generation to support EXCLUDES
Diffstat (limited to 'library/cpp/neh/neh.cpp')
-rw-r--r-- | library/cpp/neh/neh.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/library/cpp/neh/neh.cpp b/library/cpp/neh/neh.cpp index 2a3eef5023..8b3092ad57 100644 --- a/library/cpp/neh/neh.cpp +++ b/library/cpp/neh/neh.cpp @@ -43,12 +43,20 @@ namespace { }; public: + ~TMultiRequester() { + for (auto& req : Reqs_) { + req->Register(nullptr); + } + } + void Add(const THandleRef& req) override { Reqs_.insert(req); + req->Register(&WaitQueue_); } void Del(const THandleRef& req) override { Reqs_.erase(req); + req->Register(nullptr); } bool Wait(THandleRef& req, TInstant deadLine) override { @@ -56,11 +64,8 @@ namespace { if (Reqs_.empty()) { return false; } - TOnComplete cb(this); - - WaitForMultipleObj(Reqs_.begin(), Reqs_.end(), deadLine, cb); - + WaitForMultipleObj(WaitQueue_, deadLine, cb); if (!cb.Signalled) { return false; } @@ -78,12 +83,13 @@ namespace { inline void OnComplete(const THandleRef& req) { Complete_.push_back(req); - Reqs_.erase(req); + Del(req); } private: typedef THashSet<THandleRef, TOps, TOps> TReqs; typedef TList<THandleRef> TComplete; + TWaitQueue WaitQueue_; TReqs Reqs_; TComplete Complete_; }; |