From e70cfe7abd5b739b30871099255bbe950afba866 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Tue, 19 Nov 2019 20:58:15 +0100 Subject: [PATCH] Remove broken combinator signaling Remove the buggy and unstable combinator signaling implementation. --- CHANGELOG.md | 6 ++++ client.js | 1 - master.js | 11 +------ package.json | 2 +- sharedPlugins/clusterioMod/index.js | 50 ----------------------------- 5 files changed, 8 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7247b892..9fb0f966 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========= +Version 1.2.4 +------------- + +- Removed broken remote combinator signaling. + + Version 1.2.3 ------------- diff --git a/client.js b/client.js index 787f3dcc..8f20ae33 100644 --- a/client.js +++ b/client.js @@ -299,7 +299,6 @@ if (!command || command == "help" || command == "--help") { fs.mkdirSync(instancedirectory + "/saves/"); fs.writeFileSync(instancedirectory + "/script-output/output.txt", ""); fs.writeFileSync(instancedirectory + "/script-output/orders.txt", ""); - fs.writeFileSync(instancedirectory + "/script-output/txbuffer.txt", ""); fs.mkdirSync(instancedirectory + "/mods/"); fs.mkdirSync(instancedirectory + "/instanceMods/"); fs.mkdirSync(instancedirectory + "/scenarios/"); diff --git a/master.js b/master.js index 2fb5aee8..38285a79 100644 --- a/master.js +++ b/master.js @@ -1,7 +1,6 @@ /** Clusterio master server. Facilitates communication between slaves through -a webserver, storing data related to slaves like production graphs and -combinator signals. +a webserver, storing data related to slaves like production graphs. @module clusterioMaster @author Danielv123 @@ -876,14 +875,6 @@ class wsSlave { prometheusWsUsageCounter.labels('heartbeat', this.instanceID).inc(); this.lastBeat = Date.now(); }); - this.socket.on("combinatorSignal", circuitFrameWithMeta => { - prometheusWsUsageCounter.labels('combinatorSignal', this.instanceID).inc(); - if(circuitFrameWithMeta && typeof circuitFrameWithMeta == "object"){ - Object.keys(wsSlaves).forEach(instanceID => { - wsSlaves[instanceID].socket.emit("processCombinatorSignal", circuitFrameWithMeta); - }); - } - }); // handle command return values this.commandsWaitingForReturn = {}; this.socket.on("runCommandReturnValue", resp => { diff --git a/package.json b/package.json index 258fb32d..aeefd880 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "clusterio", - "version": "1.2.3", + "version": "1.2.4-alpha", "description": "Interserver communication for factorio", "repository": "https://github.com/Danielv123/factorioClusterio", "main": "master.js", diff --git a/sharedPlugins/clusterioMod/index.js b/sharedPlugins/clusterioMod/index.js index 9b2dc35d..558a3cb0 100644 --- a/sharedPlugins/clusterioMod/index.js +++ b/sharedPlugins/clusterioMod/index.js @@ -232,56 +232,6 @@ module.exports = class remoteCommands { setTimeout(function(){ messageInterface("/silent-command remote.call('clusterio','setWorldID',"+that.config.unique+")") }, 20000); - /* REMOTE SIGNALLING - * send any signals the slave has been told to send - * Fetch combinator signals from the server - */ - this.socket.on("processCombinatorSignal", circuitFrameWithMeta => { - if(circuitFrameWithMeta && typeof circuitFrameWithMeta == "object" && circuitFrameWithMeta.frame && Array.isArray(circuitFrameWithMeta.frame)){ - messageInterface("/silent-command remote.call('clusterio', 'receiveFrame', '"+JSON.stringify(circuitFrameWithMeta.frame)+"')"); - } - }); - // get outbound frames from file and send to master - // get array of lines in file, each line should correspond to a JSON encoded frame - let signals = fs.readFileSync(instancedirectory + "/script-output/txbuffer.txt", "utf8").split("\n"); - // if we actually got anything from the file, proceed and reset file - let readingTxBufferSoon = false; - let txBufferClearCounter = 0; - fs.watch(instancedirectory + "/script-output/txbuffer.txt", "utf-8", (eventType, filename) => { - if(!readingTxBufferSoon){ // use a 100ms delay to avoid messing with rapid sequential writes from factorio (I think that might be a problem maybe?) - readingTxBufferSoon = true; - setTimeout(()=>{ - txBufferClearCounter++; - fs.readFile(instancedirectory + "/script-output/txbuffer.txt", "utf-8", (err, signals) => { - signals = signals.split("\n"); - if (signals[0]) { - //if(txBufferClearCounter > 500){ - fs.writeFileSync(instancedirectory + "/script-output/txbuffer.txt", ""); - // txBufferClearCounter = 0; - //} - - // loop through all our frames - for (let i = 0; i < signals.length; i++) { - if (signals[i] && objectOps.isJSON(signals[i])) { - // signals[i] is a JSON array called a "frame" of signals. We timestamp it for storage on master - // then we unpack and RCON in this.frame to the game later. - let framepart = JSON.parse(signals[i]); - let doneframe = { - time: Date.now(), - frame: framepart, // thats our array of objects(single signals); - } - // send to master using socket.io, opened at the top of instanceManagement() - this.socket.emit("combinatorSignal", doneframe); - } else { - // console.log("Invalid jsony: "+typeof signals[i]) - } - } - } - }); - readingTxBufferSoon = false; - },100); - } - }); } async getCommand(file){ this.commandCache = this.commandCache || {};