From f3d4cfdcf5f89ebc0cf6fbff1a692db3e7291423 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Tue, 26 May 2020 14:04:25 +0200 Subject: [PATCH] Add reference to Slave in Instance Add a reference to the Slave that's running the given instance in order for it to be able to access the slave config. --- slave.js | 13 +++++++------ test/slave.js | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/slave.js b/slave.js index 13b07ef8..ca2301ac 100644 --- a/slave.js +++ b/slave.js @@ -58,9 +58,10 @@ const instanceFactorioAutosaveSize = new prometheus.Gauge( * Keeps track of the runtime parameters of an instance */ class Instance extends link.Link{ - constructor(connector, dir, factorioDir, instanceConfig) { + constructor(slave, connector, dir, factorioDir, instanceConfig) { super('instance', 'slave', connector); link.attachAllMessages(this); + this._slave = slave; this._dir = dir; this.plugins = new Map(); @@ -141,21 +142,21 @@ class Instance extends link.Link{ console.log(`Clusterio | Loaded plugin ${pluginInfo.name} in ${Date.now() - pluginLoadStarted}ms`); } - async init(pluginInfos, slave) { + async init(pluginInfos) { await this.server.init(); // load plugins for (let pluginInfo of pluginInfos) { if ( !pluginInfo.instanceEntrypoint - || !slave.serverPlugins.has(pluginInfo.name) + || !this._slave.serverPlugins.has(pluginInfo.name) || !this.config.group(pluginInfo.name).get("enabled") ) { continue; } try { - await this._loadPlugin(pluginInfo, slave); + await this._loadPlugin(pluginInfo, this._slave); } catch (err) { this.notifyExit(); throw err; @@ -801,9 +802,9 @@ class Slave extends link.Link { let [connectionClient, connectionServer] = link.VirtualConnector.makePair(); let instanceConnection = new InstanceConnection(connectionServer, this, instanceId); let instance = new Instance( - connectionClient, instanceInfo.path, this.config.get("slave.factorio_directory"), instanceInfo.config + this, connectionClient, instanceInfo.path, this.config.get("slave.factorio_directory"), instanceInfo.config ); - await instance.init(this.pluginInfos, this); + await instance.init(this.pluginInfos); // XXX: race condition on multiple simultanious calls this.instanceConnections.set(instanceId, instanceConnection); diff --git a/test/slave.js b/test/slave.js index 47a146b9..d9309753 100644 --- a/test/slave.js +++ b/test/slave.js @@ -17,7 +17,7 @@ describe("Slave testing", function() { let instanceConfig = new config.InstanceConfig(); await instanceConfig.init(); instanceConfig.set("instance.name", "foo"); - instance = new slave._Instance(new link.VirtualConnector(), "dir", "factorioDir", instanceConfig); + instance = new slave._Instance({}, new link.VirtualConnector(), "dir", "factorioDir", instanceConfig); }); describe(".name", function() { @@ -109,7 +109,7 @@ describe("Slave testing", function() { await instanceConfig.init(); instanceConfig.set("instance.name", "test"); instance = new slave._Instance( - new link.VirtualConnector(), path.join(testDir, "instance"), "factorioDir", instanceConfig + {}, new link.VirtualConnector(), path.join(testDir, "instance"), "factorioDir", instanceConfig ); await fs.outputFile(instance.path("mods", "mod_i.zip"), "i"); });