/** * 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. */ #import #import #import #import namespace facebook { namespace react { class RCTMessageThread : public MessageQueueThread { public: RCTMessageThread(NSRunLoop *runLoop, RCTJavaScriptCompleteBlock errorBlock); ~RCTMessageThread() override; void runOnQueue(std::function&&) override; void runOnQueueSync(std::function&&) override; void quitSynchronous() override; void setRunLoop(NSRunLoop *runLoop); private: void tryFunc(const std::function& func); void runAsync(std::function func); void runSync(std::function func); CFRunLoopRef m_cfRunLoop; RCTJavaScriptCompleteBlock m_errorBlock; std::atomic_bool m_shutdown; }; } }