0
我写Agueas [1]为插件Node.js的传递对象到由C回调函数++代码
现在我已经同步码,C++类如下所示:
class LibAugeas : public node::ObjectWrap {
public:
static void Init(Handle<Object> target);
protected:
augeas * m_aug;
LibAugeas();
~LibAugeas();
static Handle<Value> New(const Arguments& args);
static Handle<Value> get (const Arguments& args);
static Handle<Value> set (const Arguments& args);
static Handle<Value> setm (const Arguments& args);
// other methods
};
的用法这个类在JS:
var lib = require('...');
var aug = new lib.Augeas(...);
aug.set(...);
aug.get(...);
// etc
我要推动异步代码。
瓶颈是创建augeas对象(aug_init),而所有或一些镜头和文件正在加载和解析。这样的想法是创建augeas异步对象,然后通过创建JS对象的回调函数:
- 用纯C线:调用aug_init(),aug_load()得到augeas处理。
- 准备好后,使用augeas句柄来创建JS对象(请参阅第一个片段)
- 将创建的JS对象传递给回调函数。
用法可能是这样:
lib.heracles(function(aug) {
if (!aug.error()) {
console.log('Hello!');
// async save:
aug.save(function(err, msg) {
console.log(msg);
});
} else {
console.log('Sad, but true :-(');
}
}
);
最后,我的问题:我不知道如何在C++创建JS对象:-)
构造static Handle<Value> New(const Arguments& args);
回报args.This()
,但是当我在C++代码中时,我没有args
,也无法包装对象。
那么,如何在C++中创建JS对象?请不要伤我的心脏说:-)
更新:对象tenplate可能会创建一次,也可能会重用FunctionTemplate。 – Igor 2012-04-25 11:25:46