1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | #import <string>
|
9 |
|
10 | #import <Foundation/Foundation.h>
|
11 |
|
12 | #import <React/RCTJavaScriptExecutor.h>
|
13 | #import <cxxreact/MessageQueueThread.h>
|
14 |
|
15 | namespace facebook {
|
16 | namespace react {
|
17 |
|
18 | class RCTMessageThread : public MessageQueueThread {
|
19 | public:
|
20 | RCTMessageThread(NSRunLoop *runLoop, RCTJavaScriptCompleteBlock errorBlock);
|
21 | ~RCTMessageThread() override;
|
22 | void runOnQueue(std::function<void()>&&) override;
|
23 | void runOnQueueSync(std::function<void()>&&) override;
|
24 | void quitSynchronous() override;
|
25 | void setRunLoop(NSRunLoop *runLoop);
|
26 |
|
27 | private:
|
28 | void tryFunc(const std::function<void()>& func);
|
29 | void runAsync(std::function<void()> func);
|
30 | void runSync(std::function<void()> func);
|
31 |
|
32 | CFRunLoopRef m_cfRunLoop;
|
33 | RCTJavaScriptCompleteBlock m_errorBlock;
|
34 | std::atomic_bool m_shutdown;
|
35 | };
|
36 |
|
37 | }
|
38 | }
|