2012-04-15 2 views
2

Also ich bin ziemlich neu in C und arbeite an einer einfachen Node Native Extension. HierC Node Native Extension ruft die Methode zweimal auf

ist der Code für meine Erweiterung namens HelloWorld.c

Handle<Value> Method(const Arguments& args) { 
    printf(":%s:\n", "Calling Method"); 
    //SendByte(bdrate,'1'); 
    HandleScope scope; 
    if(toggleLight()==0){ 
    printf(":%s:\n", "Turning On"); 
    return scope.Close(String::New("Turned On")); 
    } 
    else{ 
printf(":%s:\n", "Turning Off"); 
return scope.Close(String::New("Turned Off")); 
    } 
} 

void init(Handle<Object> target) { 
    printf(":%s:\n", "Init"); 
    target->Set(String::NewSymbol("hello"), 
     FunctionTemplate::New(Method)->GetFunction()); 
} 
NODE_MODULE(helloworld, init) 

ich die vorherige durch die folgende Node.js Klasse verbrauchen ...

var addon = require('./build/Release/helloworld'); 

var http = require("http"); 

http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write(addon.hello()); 
    response.end(); 
}).listen(8888); 

Als ich die Stelle nenne ich sehen das folgende in meinem Terminal

~/Desktop/hellonode$ node testnode 
:Init: 
:Calling Method: 
:Turning Off: 
:Calling Method: 
:Turning On: 

Warum scheint es, die Methode zweimal aufzurufen? Ich bin sicher, die Antwort ist offensichtlich, aber ich kann es nicht sehen.

+3

Hmm, könnten Sie entscheiden, ob Sie C oder C++ verwenden? Hier haben Sie eine Mischung aus C und C++ ... in .c-Datei. Beeindruckend. – Griwes

Antwort

Verwandte Themen