#pragma once #include #include namespace NActors { template struct TActorFutureCallback : TActor> { using TCallback = std::function>&)>; using TBase = TActor>; TCallback Callback; static constexpr IActor::EActivityType ActorActivityType() { return IActor::ACTOR_FUTURE_CALLBACK; } TActorFutureCallback(TCallback&& callback) : TBase(&TActorFutureCallback::StateWaitForEvent) , Callback(std::move(callback)) {} STRICT_STFUNC(StateWaitForEvent, HFunc(EventType, Handle) ) void Handle(typename EventType::TPtr ev, const TActorContext& ctx) { Callback(ev); TBase::Die(ctx); } }; } // NActors