diff --git a/packages/ctl/ctl.js b/packages/ctl/ctl.js index 0c6dd755..74351e37 100755 --- a/packages/ctl/ctl.js +++ b/packages/ctl/ctl.js @@ -621,7 +621,7 @@ class Control extends libLink.Link { */ this.plugins = controlPlugins; for (let controlPlugin of controlPlugins.values()) { - libPlugin.attachPluginMessages(this, controlPlugin.info, controlPlugin); + libPlugin.attachPluginMessages(this, controlPlugin); } /** diff --git a/packages/lib/plugin.js b/packages/lib/plugin.js index 08795c84..8e9aaafa 100644 --- a/packages/lib/plugin.js +++ b/packages/lib/plugin.js @@ -418,19 +418,18 @@ class BaseControlPlugin { /** * Attach plugin messages * - * Attaches all messages defined in the `.message` property of the - * `pluginInfo` passed with handlers taken from `pluin`. + * Attaches all messages defined in the `.info.message` property of the + * `plugin` passed with handlers taken from the `pluin`. * * @param {module:lib/link.Link} link - Link to attach handlers to. - * @param {object} pluginInfo - Plugin info object. * @param {module:lib/plugin.BasePlugin} plugin - - * The instance of the plugin to use handlers from. + * The instance of the plugin attach messages and handlers from. */ -function attachPluginMessages(link, pluginInfo, plugin) { - let messageDefinitions = pluginInfo.messages || []; +function attachPluginMessages(link, plugin) { + let messageDefinitions = plugin.info.messages || []; for (let [name, messageFormat] of Object.entries(messageDefinitions)) { - if (messageFormat.plugin !== pluginInfo.name) { - throw new Error(`Type of ${name} message must start with "${pluginInfo.name}:"`); + if (messageFormat.plugin !== plugin.info.name) { + throw new Error(`Type of ${name} message must start with "${plugin.info.name}:"`); } let handler = name + messageFormat.handlerSuffix; @@ -444,7 +443,7 @@ function attachPluginMessages(link, pluginInfo, plugin) { } catch (err) { if (err.code === "MISSING_LINK_HANDLER") { - err.plugin = pluginInfo.name; + err.plugin = plugin.info.name; err.handler = handler; } diff --git a/packages/master/master.js b/packages/master/master.js index 02e05286..048a661b 100755 --- a/packages/master/master.js +++ b/packages/master/master.js @@ -562,7 +562,7 @@ class BaseConnection extends libLink.Link { super("master", target, connector); libLink.attachAllMessages(this); for (let masterPlugin of masterPlugins.values()) { - libPlugin.attachPluginMessages(this, masterPlugin.info, masterPlugin); + libPlugin.attachPluginMessages(this, masterPlugin); } } diff --git a/packages/slave/slave.js b/packages/slave/slave.js index 7e474879..e220d6b6 100755 --- a/packages/slave/slave.js +++ b/packages/slave/slave.js @@ -254,7 +254,7 @@ class Instance extends libLink.Link { let instancePlugin = new InstancePluginClass(pluginInfo, this, slave); this.plugins.set(pluginInfo.name, instancePlugin); await instancePlugin.init(); - libPlugin.attachPluginMessages(this, pluginInfo, instancePlugin); + libPlugin.attachPluginMessages(this, instancePlugin); this.logger.info(`Loaded plugin ${pluginInfo.name} in ${Date.now() - pluginLoadStarted}ms`); } @@ -830,7 +830,7 @@ class InstanceConnection extends libLink.Link { libLink.attachAllMessages(this); for (let pluginInfo of slave.pluginInfos) { - libPlugin.attachPluginMessages(this, pluginInfo, null); + libPlugin.attachPluginMessages(this, { info: pluginInfo }); } } @@ -977,7 +977,7 @@ class Slave extends libLink.Link { this.pluginInfos = pluginInfos; for (let pluginInfo of pluginInfos) { - libPlugin.attachPluginMessages(this, pluginInfo, null); + libPlugin.attachPluginMessages(this, { info: pluginInfo }); } this.config = slaveConfig; diff --git a/test/lib/plugin.js b/test/lib/plugin.js index 6d5fc169..6ea1d9ac 100644 --- a/test/lib/plugin.js +++ b/test/lib/plugin.js @@ -43,24 +43,24 @@ describe("lib/plugin", function() { let mockLink = new libLink.Link("source", "target", new mock.MockConnector()); let mockEvent = new libLink.Event({ type: "test:test", links: ["target-source"] }); it("should accept pluginInfo without messages", function() { - libPlugin.attachPluginMessages(mockLink, {}, null); + libPlugin.attachPluginMessages(mockLink, { info: {} }); }); it("should attach handler for the given message", function() { function mockEventEventHandler() { }; libPlugin.attachPluginMessages( - mockLink, { name: "test", messages: { mockEvent }}, { mockEventEventHandler } + mockLink, { mockEventEventHandler, info: { name: "test", messages: { mockEvent }}} ); assert(mockLink._handlers.get("test:test_event"), "handler was not registered"); }); it("should throw if missing handler for the given message", function() { assert.throws( - () => libPlugin.attachPluginMessages(mockLink, { name: "test", messages: { mockEvent }}, {}), + () => libPlugin.attachPluginMessages(mockLink, { info: { name: "test", messages: { mockEvent }}}), new Error("Missing mockEventEventHandler on plugin test for test:test_event on source-target link") ); }); it("should throw if message starts with the wrong prefix", function() { assert.throws( - () => libPlugin.attachPluginMessages(mockLink, { name: "foo", messages: { mockEvent }}, {}), + () => libPlugin.attachPluginMessages(mockLink, { info: { name: "foo", messages: { mockEvent }}}), new Error('Type of mockEvent message must start with "foo:"') ); });