/* * 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 { class RuntimeScheduler; class TaskPriorityComparer; struct Task final { Task( SchedulerPriority priority, jsi::Function callback, std::chrono::steady_clock::time_point expirationTime); private: friend RuntimeScheduler; friend TaskPriorityComparer; SchedulerPriority priority; std::optional callback; RuntimeSchedulerClock::time_point expirationTime; jsi::Value execute(jsi::Runtime &runtime, bool didUserCallbackTimeout); }; class TaskPriorityComparer { public: inline bool operator()( std::shared_ptr const &lhs, std::shared_ptr const &rhs) { return lhs->expirationTime > rhs->expirationTime; } }; } // namespace react } // namespace facebook