Move common message integration code to NodeBindings' base class.
This commit is contained in:
parent
41ff753339
commit
00fda0e778
4 changed files with 157 additions and 146 deletions
|
@ -6,11 +6,16 @@
|
|||
#define RAVE_COMMON_NODE_BINDINGS_
|
||||
|
||||
#include "base/basictypes.h"
|
||||
#include "vendor/node/deps/uv/include/uv.h"
|
||||
|
||||
namespace WebKit {
|
||||
class WebFrame;
|
||||
}
|
||||
|
||||
namespace base {
|
||||
class MessageLoop;
|
||||
}
|
||||
|
||||
namespace atom {
|
||||
|
||||
class NodeBindings {
|
||||
|
@ -30,17 +35,51 @@ class NodeBindings {
|
|||
virtual void BindTo(WebKit::WebFrame* frame);
|
||||
|
||||
// Prepare for message loop integration.
|
||||
virtual void PrepareMessageLoop() = 0;
|
||||
virtual void PrepareMessageLoop();
|
||||
|
||||
// Do message loop integration.
|
||||
virtual void RunMessageLoop() = 0;
|
||||
virtual void RunMessageLoop();
|
||||
|
||||
protected:
|
||||
explicit NodeBindings(bool is_browser);
|
||||
|
||||
// Called to poll events in new thread.
|
||||
virtual void PollEvents() = 0;
|
||||
|
||||
// Run the libuv loop for once.
|
||||
void UvRunOnce();
|
||||
|
||||
// Make the main thread run libuv loop.
|
||||
void WakeupMainThread();
|
||||
|
||||
// Are we running in browser.
|
||||
bool is_browser_;
|
||||
|
||||
// Main thread's MessageLoop.
|
||||
base::MessageLoop* message_loop_;
|
||||
|
||||
// Main thread's libuv loop.
|
||||
uv_loop_t* uv_loop_;
|
||||
|
||||
// Dummy handle to make uv's loop not quit.
|
||||
uv_async_t dummy_uv_handle_;
|
||||
|
||||
// Thread for polling events.
|
||||
uv_thread_t embed_thread_;
|
||||
|
||||
// Whether we're done.
|
||||
bool embed_closed_;
|
||||
|
||||
// Semaphore to wait for main loop in the embed thread.
|
||||
uv_sem_t embed_sem_;
|
||||
|
||||
private:
|
||||
// Thread to poll uv events.
|
||||
static void EmbedThreadRunner(void *arg);
|
||||
|
||||
// Called when uv's watcher queue changes.
|
||||
static void OnWatcherQueueChanged(uv_loop_t* loop);
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(NodeBindings);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue