You should use a persistent handle to store this.

v8::Persistent<v8::Function> cb;
cb.Reset(info.GetIsolate(), func);

To use the function stored in a persistent handle: Handle<Function> func = 
Handle<Function>::New(myPersistentCallback);

The problem would be to find it inside the set to remove it, you would have 
to loop through the set somehow I guess.

The idea behind persistant handles is that they don't go out of scope.

/Peter

Den måndagen den 20:e januari 2014 kl. 17:23:14 UTC+1 skrev 
[email protected]:
>
> I would like to implement this functionality
>
> function myFunction1() {
>    //do stuff
> }
>
> function myFunction2() {
>    //do other stuff
> }
>
> myAddon.addCallback(myFunction1);
> myAddon.addCallback(myFunction2);
> myAddon.removeCallback(myFunction1);
>
> In order to do this I need to store these function in a std::set like so
>
> void addCallback(const v8::FunctionCallbackInfo<v8::Value>& args) {
>    v8::HandleScope scope(args.GetIsolate());
>    v8::Local<v8::Function> cb = v8::Local<v8::Function>::Cast(args[0]);
>    std::set mySet = this->mySet;
>    //now how do I insert a reference to this function into mySet so I can 
> retrieve
>    //it later
> }
>
> void removeCallback(const v8::FunctionCallbackInfo<v8::Value>& args) {
>    v8::HandleScope scope(args.GetIsolate());
>    v8::Local<v8::Function> cb = v8::Local<v8::Function>::Cast(args[0]);
>    std::set mySet = this->mySet;
>    //now how do I remove the element in this set that refers to this 
> function?
> }
>
> How does one go about doing this? I don't want to use 
> v8::Object::GetIdentityHash() 
> because the result is not guaranteed to be unique.
>
> I also can't just store the Local<Function> in the std::set because the 
> copy constructor is private and it would also get descoped once 
> removeCallback or addCallback return.
>
> Thanks for any help in advance.
>

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to