#ifndef SetTimeout_h #define SetTimeout_h #include "Common.h" #include "robin_hood.h" namespace tns { class SetTimeout { public: static void Init(v8::Isolate* isolate, v8::Local globalTemplate); private: static void SetTimeoutCallback(const v8::FunctionCallbackInfo& args); static void ClearTimeoutCallback(const v8::FunctionCallbackInfo& args); static void Elapsed(const uint32_t key); static void RemoveKey(const uint32_t key); static uint32_t count_; struct CacheEntry { CacheEntry(v8::Isolate* isolate, v8::Persistent* callback) : isolate_(isolate), callback_(callback) { } v8::Isolate* isolate_; v8::Persistent* callback_; }; static robin_hood::unordered_map cache_; }; } #endif /* SetTimeout_h */