diff options
| author | somov <[email protected]> | 2022-02-10 16:45:49 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:45:49 +0300 | 
| commit | 7489e4682331202b9c7d863c0898eb83d7b12c2b (patch) | |
| tree | 9142afc54d335ea52910662635b898e79e192e49 /library/cpp/messagebus/scheduler/scheduler.cpp | |
| parent | a5950576e397b1909261050b8c7da16db58f10b1 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/messagebus/scheduler/scheduler.cpp')
| -rw-r--r-- | library/cpp/messagebus/scheduler/scheduler.cpp | 72 | 
1 files changed, 36 insertions, 36 deletions
diff --git a/library/cpp/messagebus/scheduler/scheduler.cpp b/library/cpp/messagebus/scheduler/scheduler.cpp index 5c0686d32a1..5a5fe528943 100644 --- a/library/cpp/messagebus/scheduler/scheduler.cpp +++ b/library/cpp/messagebus/scheduler/scheduler.cpp @@ -1,37 +1,37 @@ -#include "scheduler.h"  -  -#include <util/datetime/base.h>  -#include <util/generic/algorithm.h>  -#include <util/generic/yexception.h>  -  +#include "scheduler.h" + +#include <util/datetime/base.h> +#include <util/generic/algorithm.h> +#include <util/generic/yexception.h> +  //#include "dummy_debugger.h"  using namespace NBus;  using namespace NBus::NPrivate; -  -class TScheduleDeadlineCompare {  -public:  + +class TScheduleDeadlineCompare { +public:      bool operator()(const IScheduleItemAutoPtr& i1, const IScheduleItemAutoPtr& i2) const noexcept {          return i1->GetScheduleTime() > i2->GetScheduleTime(); -    }  -};  -  -TScheduler::TScheduler()  +    } +}; + +TScheduler::TScheduler()      : StopThread(false)      , Thread([&] { this->SchedulerThread(); }) -{  -}  -  -TScheduler::~TScheduler() {  +{ +} + +TScheduler::~TScheduler() {      Y_VERIFY(StopThread, "state check"); -}  -  +} +  size_t TScheduler::Size() const {      TGuard<TLock> guard(Lock);      return Items.size() + (!!NextItem ? 1 : 0);  } -void TScheduler::Stop() {  +void TScheduler::Stop() {      {          TGuard<TLock> guard(Lock);          Y_VERIFY(!StopThread, "Scheduler already stopped"); @@ -46,28 +46,28 @@ void TScheduler::Stop() {      for (auto& item : Items) {          item.Destroy(); -    }  -}  -  -void TScheduler::Schedule(TAutoPtr<IScheduleItem> i) {  +    } +} + +void TScheduler::Schedule(TAutoPtr<IScheduleItem> i) {      TGuard<TLock> lock(Lock);      if (StopThread) -        return;  +        return;      if (!!NextItem) {          if (i->GetScheduleTime() < NextItem->GetScheduleTime()) {              DoSwap(i, NextItem);          } -    }  +    } -    Items.push_back(i);  +    Items.push_back(i);      PushHeap(Items.begin(), Items.end(), TScheduleDeadlineCompare());      FillNextItem();      CondVar.Signal(); -}  -  +} +  void TScheduler::FillNextItem() {      if (!NextItem && !Items.empty()) {          PopHeap(Items.begin(), Items.end(), TScheduleDeadlineCompare()); @@ -76,22 +76,22 @@ void TScheduler::FillNextItem() {      }  } -void TScheduler::SchedulerThread() {  +void TScheduler::SchedulerThread() {      for (;;) {          IScheduleItemAutoPtr current; -        {  +        {              TGuard<TLock> guard(Lock);              if (StopThread) {                  break; -            }  +            }              if (!!NextItem) {                  CondVar.WaitD(Lock, NextItem->GetScheduleTime());              } else {                  CondVar.WaitI(Lock); -            }  +            }              if (StopThread) {                  break; @@ -106,7 +106,7 @@ void TScheduler::SchedulerThread() {              }              current = NextItem.Release(); -        }  +        }          current->Do();          current.Destroy(); @@ -115,5 +115,5 @@ void TScheduler::SchedulerThread() {              TGuard<TLock> guard(Lock);              FillNextItem();          } -    }  -}  +    } +}  | 
