diff options
| author | amatanhead <[email protected]> | 2022-02-10 16:50:04 +0300 |
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:50:04 +0300 |
| commit | b6f3a80f7c2c8b7dbb0c01b056fdc1fd8cd820e9 (patch) | |
| tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/actors/core/ask.cpp | |
| parent | 8879605a63ac17539be5b3bd41b529791f4d4b02 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/actors/core/ask.cpp')
| -rw-r--r-- | library/cpp/actors/core/ask.cpp | 140 |
1 files changed, 70 insertions, 70 deletions
diff --git a/library/cpp/actors/core/ask.cpp b/library/cpp/actors/core/ask.cpp index 3b18fa0cb45..0054c9a906c 100644 --- a/library/cpp/actors/core/ask.cpp +++ b/library/cpp/actors/core/ask.cpp @@ -1,74 +1,74 @@ -#include "ask.h" - -#include "actor_bootstrapped.h" -#include "actorid.h" -#include "event.h" -#include "hfunc.h" - -namespace NActors { - namespace { - class TAskActor: public TActorBootstrapped<TAskActor> { - enum { - Timeout = EventSpaceBegin(TEvents::ES_PRIVATE), - }; - - // We can't use the standard timeout event because recipient may send us one. - struct TTimeout: public TEventLocal<TTimeout, Timeout> { - }; - - public: - TAskActor( - TMaybe<ui32> expectedEventType, +#include "ask.h" + +#include "actor_bootstrapped.h" +#include "actorid.h" +#include "event.h" +#include "hfunc.h" + +namespace NActors { + namespace { + class TAskActor: public TActorBootstrapped<TAskActor> { + enum { + Timeout = EventSpaceBegin(TEvents::ES_PRIVATE), + }; + + // We can't use the standard timeout event because recipient may send us one. + struct TTimeout: public TEventLocal<TTimeout, Timeout> { + }; + + public: + TAskActor( + TMaybe<ui32> expectedEventType, TActorId recipient, - THolder<IEventBase> event, - TDuration timeout, - const NThreading::TPromise<THolder<IEventBase>>& promise) - : ExpectedEventType_(expectedEventType) - , Recipient_(recipient) - , Event_(std::move(event)) - , Timeout_(timeout) - , Promise_(promise) - { - } - - public: - void Bootstrap() { - Send(Recipient_, std::move(Event_)); - Become(&TAskActor::Waiting); - - if (Timeout_ != TDuration::Max()) { - Schedule(Timeout_, new TTimeout); - } - } - - STATEFN(Waiting) { - if (ev->GetTypeRewrite() == TTimeout::EventType) { - Promise_.SetException(std::make_exception_ptr(yexception() << "ask timeout")); - } else if (!ExpectedEventType_ || ev->GetTypeRewrite() == ExpectedEventType_) { - Promise_.SetValue(ev->ReleaseBase()); - } else { - Promise_.SetException(std::make_exception_ptr(yexception() << "received unexpected response " << ev->GetBase()->ToString())); - } - - PassAway(); - } - - public: - TMaybe<ui32> ExpectedEventType_; + THolder<IEventBase> event, + TDuration timeout, + const NThreading::TPromise<THolder<IEventBase>>& promise) + : ExpectedEventType_(expectedEventType) + , Recipient_(recipient) + , Event_(std::move(event)) + , Timeout_(timeout) + , Promise_(promise) + { + } + + public: + void Bootstrap() { + Send(Recipient_, std::move(Event_)); + Become(&TAskActor::Waiting); + + if (Timeout_ != TDuration::Max()) { + Schedule(Timeout_, new TTimeout); + } + } + + STATEFN(Waiting) { + if (ev->GetTypeRewrite() == TTimeout::EventType) { + Promise_.SetException(std::make_exception_ptr(yexception() << "ask timeout")); + } else if (!ExpectedEventType_ || ev->GetTypeRewrite() == ExpectedEventType_) { + Promise_.SetValue(ev->ReleaseBase()); + } else { + Promise_.SetException(std::make_exception_ptr(yexception() << "received unexpected response " << ev->GetBase()->ToString())); + } + + PassAway(); + } + + public: + TMaybe<ui32> ExpectedEventType_; TActorId Recipient_; - THolder<IEventBase> Event_; - TDuration Timeout_; - NThreading::TPromise<THolder<IEventBase>> Promise_; - }; - } - - THolder<IActor> MakeAskActor( - TMaybe<ui32> expectedEventType, + THolder<IEventBase> Event_; + TDuration Timeout_; + NThreading::TPromise<THolder<IEventBase>> Promise_; + }; + } + + THolder<IActor> MakeAskActor( + TMaybe<ui32> expectedEventType, TActorId recipient, - THolder<IEventBase> event, - TDuration timeout, - const NThreading::TPromise<THolder<IEventBase>>& promise) - { + THolder<IEventBase> event, + TDuration timeout, + const NThreading::TPromise<THolder<IEventBase>>& promise) + { return MakeHolder<TAskActor>(expectedEventType, std::move(recipient), std::move(event), timeout, promise); - } -} + } +} |
