// Copyright (c) 2013 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef ATOM_COMMON_API_ATOM_BINDINGS_H_ #define ATOM_COMMON_API_ATOM_BINDINGS_H_ #include #include "base/macros.h" #include "base/strings/string16.h" #include "v8/include/v8.h" #include "vendor/node/deps/uv/include/uv.h" namespace node { class Environment; } namespace atom { class AtomBindings { public: AtomBindings(); virtual ~AtomBindings(); // Add process.atomBinding function, which behaves like process.binding but // load native code from Electron instead. void BindTo(v8::Isolate* isolate, v8::Local process); // Should be called when a node::Environment has been destroyed. void EnvironmentDestroyed(node::Environment* env); static void Log(const base::string16& message); static void Crash(); private: void ActivateUVLoop(v8::Isolate* isolate); static void OnCallNextTick(uv_async_t* handle); uv_async_t call_next_tick_async_; std::list pending_next_ticks_; DISALLOW_COPY_AND_ASSIGN(AtomBindings); }; } // namespace atom #endif // ATOM_COMMON_API_ATOM_BINDINGS_H_