Обработка идентифицированного модуля в C
Я написал тестовый аддон (небольшое приложение hello world, не являющееся экземпляром) для Node.JS, и теперь я играю с плагинами, способными к подключению. В настоящее время я пытаюсь создать аддон, который может получить доступ к функциям аддона hello world, а также к миру hello, вызывающему аддон хоста плагина с регистрацией присутствия.
Пока что единственный способ, который я могу определить на данный момент, заключается в том, что для файла.js требуются оба дополнения, затем вызов дополнения Hello World для регистрации, а затем вызов плагина-хоста. Итак, вкратце код будет выглядеть так:
var host = require('./pluginHost');
host.registerPlugin(require('./helloWorldPlugin').plugin());
host.registerPlugin(require('./fooBarBazPlugin').plugin());
host.registrationComplete();
На самом деле, может быть немного больше кода конфигурации, но сейчас это больше концепция. Итак, учитывая приведенный выше код, в pluginHost
код дополнения, как я могу получить доступ и загрузить информацию из этого объекта. Не забывайте, что часть кода плагина, которая анализируется pluginHost
будет статической коллекцией функций, которая будет содержать информацию о других доступных объектах и классах, а также основной IPC между pluginHost
и другие plugins
,
1 ответ
Право, обнаружил, как это сделать
C++:
Handle<Value> registerPlugin(const Arguments &args) {
HandleScope scope;
Handle<Object> This = args.This();
Handle<Context> context = Context::New();
Handle<Object> object = This->Get(String::New("ObjectValueIWantKey"))->ToObject();
if (object == Undefined()) {
return Undefined();
}
Handle<Value> functionName = object->Get(String::New("SomeFunctionName"));
if (functionName->IsFunction()) {
Handle<Function> function = Handle<Function>::Cast(functionName);
Handle<Value> fargs[1] = { String::New("ARG") };
Handle<Value> methodResult = function->Call(object, 1, fargs);
}
Handle<Value> variableResult = object->Get(String::New("SomePropertyName"));
...
}
В этом примере, позвонив host.registerPlugin(require('./pluginObject'))
позволит pluginHost
библиотека для взаимодействия с ним и включения его для других систем.