/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ #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; }; } }