Je crée une extension native pour un nœud qui inclut une opération de longue durée avec un rappel à la fin.Nœud NAN: obtention d'une erreur d'appel appelant GetFromPersistent dans la méthode Execute d'AsyncWorker
Je passe un tampon de noeud à l'appel. Il contient la charge utile de ce qui doit être traité par l'extension.
Je devrais pouvoir stocker mon tampon dans le stockage persistant dans le constructeur de mon AsyncWorker, et le récupérer plus tard quand j'en ai besoin.
Cet exemple (de la suite de test nan) est ce que je fonde généralement mon code sur: https://github.com/nodejs/nan/blob/master/test/cpp/bufferworkerpersistent.cpp
Ce test fonctionne, mais il ne fait rien avec le tampon jusqu'à ce que la méthode HandleOKCallback, qui ISN Pas super intéressant pour moi. J'ai besoin d'accéder au tampon pendant la méthode Execute.
Si je simplement ajouter une ligne à la méthode Execute() du test pour tenter d'accéder à la mémoire tampon, comme celui-ci:
void Execute() {
printf("before GetFromPersistent\n");
v8::Local<v8::Value> handle = GetFromPersistent("buffer");
printf("after GetFromPersistent\n");
printf("buffer @%llux len %ld\n", (uint64_t)node::Buffer::Data(handle), node::Buffer::Length(handle));
Sleep(milliseconds);
}
Je reçois une erreur de seg sur l'appel GetFromPersistent.
Ma question est: qu'est-ce qui me manque? Devrais-je ne pas être en mesure de tirer un objet persistant dans la méthode Execute? Si oui, pourquoi pas?