diff --git a/react-native/react-native-flipper/windows/ReactNativeFlipper/FlipperReactScheduler.h b/react-native/react-native-flipper/windows/ReactNativeFlipper/FlipperReactScheduler.h new file mode 100644 index 000000000..66dc54978 --- /dev/null +++ b/react-native/react-native-flipper/windows/ReactNativeFlipper/FlipperReactScheduler.h @@ -0,0 +1,45 @@ +/* + * 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 "../../../../xplat/Flipper/FlipperScheduler.h" + +using namespace winrt::Microsoft::ReactNative; + +namespace facebook { +namespace flipper { + +class FlipperReactScheduler : public Scheduler { + FlipperReactScheduler() + : dispatcher_(ReactDispatcher::CreateSerialDispatcher()) {} + virtual ~FlipperReactScheduler() {} + + virtual void schedule(facebook::flipper::Func&& t) override { + dispatcher_.Post([t]() { t(); }); + } + virtual void scheduleAfter(facebook::flipper::Func&& t, unsigned int ms) + override { + dispatcher_.Post([t, ms]() { + std::this_thread::sleep_for(std::chrono::microseconds(ms)); + t(); + }); + } + + virtual bool isRunningInOwnThread() override { + return true; + } + + private: + ReactDispatcher dispatcher_; +}; + +} // namespace flipper +} // namespace facebook