v8::Handle<v8::Object> object,
ProviderType provider,
AsyncWrap* parent)
- : BaseObject(env, object), bits_(static_cast<uint32_t>(provider) << 1) {
+ : BaseObject(env, object, provider),
+ bits_(static_cast<uint32_t>(provider) << 1) {
// Check user controlled flag to see if the init callback should run.
if (!env->using_asyncwrap())
return;
namespace node {
-inline BaseObject::BaseObject(Environment* env, v8::Local<v8::Object> handle)
+inline BaseObject::BaseObject(Environment* env,
+ v8::Local<v8::Object> handle,
+ const uint16_t class_id)
: handle_(env->isolate(), handle),
env_(env) {
CHECK_EQ(false, handle.IsEmpty());
+ // Shift value 8 bits over to try avoiding conflict with anything else.
+ if (class_id != 0)
+ handle_.SetWrapperClassId(class_id << 8);
}
class BaseObject {
public:
- BaseObject(Environment* env, v8::Local<v8::Object> handle);
+ BaseObject(Environment* env,
+ v8::Local<v8::Object> handle,
+ const uint16_t class_id = 0);
virtual ~BaseObject();
// Returns the wrapped object. Returns an empty handle when