Обработка идентифицированного модуля в 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 библиотека для взаимодействия с ним и включения его для других систем.

Другие вопросы по тегам