/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include #include #include #include namespace facebook { namespace react { /* * Event beat associated with main run loop. * The callback is always called on the main thread. */ class SynchronousEventBeat final : public EventBeat, public RunLoopObserver::Delegate { public: SynchronousEventBeat( RunLoopObserver::Unique uiRunLoopObserver, RuntimeExecutor runtimeExecutor, std::shared_ptr runtimeScheduler); void induce() const override; #pragma mark - RunLoopObserver::Delegate void activityDidChange( RunLoopObserver::Delegate const *delegate, RunLoopObserver::Activity activity) const noexcept override; private: void lockExecutorAndBeat() const; RunLoopObserver::Unique uiRunLoopObserver_; RuntimeExecutor runtimeExecutor_; std::shared_ptr runtimeScheduler_; }; } // namespace react } // namespace facebook