diff --git a/ReactCommon/fabric/core/events/EventBeatBasedExecutor.cpp b/ReactCommon/fabric/core/events/EventBeatBasedExecutor.cpp deleted file mode 100644 index d9b630c4f9b..00000000000 --- a/ReactCommon/fabric/core/events/EventBeatBasedExecutor.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include - -#include "EventBeatBasedExecutor.h" - -namespace facebook { -namespace react { - -using Mode = EventBeatBasedExecutor::Mode; - -EventBeatBasedExecutor::EventBeatBasedExecutor( - std::unique_ptr eventBeat) - : eventBeat_(std::move(eventBeat)) { - eventBeat_->setBeatCallback( - std::bind(&EventBeatBasedExecutor::onBeat, this, true)); - eventBeat_->setFailCallback( - std::bind(&EventBeatBasedExecutor::onBeat, this, false)); -} - -void EventBeatBasedExecutor::operator()(Routine routine, Mode mode) const { - if (mode == Mode::Asynchronous) { - execute({ - /* .routine = */ std::move(routine), - }); - return; - } - - std::mutex mutex; - mutex.lock(); - - execute({ - /* .routine = */ std::move(routine), - /* .callback = */ [&mutex]() { mutex.unlock(); }, - }); - - mutex.lock(); -} - -void EventBeatBasedExecutor::execute(Task task) const { - { - std::lock_guard lock(mutex_); - - tasks_.push_back(std::move(task)); - } - - eventBeat_->request(); - eventBeat_->induce(); -} - -void EventBeatBasedExecutor::onBeat(bool success) const { - std::vector tasks; - - { - std::lock_guard lock(mutex_); - - if (tasks_.size() == 0) { - return; - } - - tasks = std::move(tasks_); - tasks_.clear(); - } - - for (const auto task : tasks) { - if (success) { - task.routine(); - } - - if (task.callback) { - task.callback(); - } - } -} - -} // namespace react -} // namespace facebook diff --git a/ReactCommon/fabric/core/events/EventBeatBasedExecutor.h b/ReactCommon/fabric/core/events/EventBeatBasedExecutor.h deleted file mode 100644 index ea281ae731c..00000000000 --- a/ReactCommon/fabric/core/events/EventBeatBasedExecutor.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its 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 { - -/* - * General purpose executor that uses EventBeat to ensure proper threading. - */ -class EventBeatBasedExecutor { - public: - using Routine = std::function; - using Callback = std::function; - - struct Task { - Routine routine; - Callback callback; - }; - - enum class Mode { Synchronous, Asynchronous }; - - EventBeatBasedExecutor(std::unique_ptr eventBeat); - - /* - * Executes given routine with given mode. - */ - void operator()(Routine routine, Mode mode = Mode::Asynchronous) const; - - private: - void onBeat(bool success = true) const; - void execute(Task task) const; - - std::unique_ptr eventBeat_; - mutable std::vector tasks_; // Protected by `mutex_`. - mutable std::mutex mutex_; -}; - -using EventBeatFactory = std::function()>; - -} // namespace react -} // namespace facebook