From d38e9a53c4161c9cfc3ff7d12d2558a3bd60b4f5 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Mon, 18 Nov 2019 14:19:12 +0100 Subject: [PATCH] Remove broken combinator signaling Remove badly implemented and broken remote combinator signaling. --- CHANGELOG.md | 1 + master.js | 11 +------ sharedPlugins/clusterioMod/index.js | 51 ----------------------------- 3 files changed, 2 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cff654d4..75e994cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ Version 2.0.0 handling in client. - Removed redundant call to /api/slaves in globalChat plugin. - Removed broken serverManager plugin. +- Removed broken remote combinator signaling. ### Breaking Changes diff --git a/master.js b/master.js index c0795f1b..454f6191 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 @@ -424,14 +423,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/sharedPlugins/clusterioMod/index.js b/sharedPlugins/clusterioMod/index.js index 64a11ce4..846c781d 100644 --- a/sharedPlugins/clusterioMod/index.js +++ b/sharedPlugins/clusterioMod/index.js @@ -36,7 +36,6 @@ module.exports = class remoteCommands { ensureFileSync(instancedirectory + "/script-output/output.txt"); ensureFileSync(instancedirectory + "/script-output/orders.txt"); - ensureFileSync(instancedirectory + "/script-output/txbuffer.txt"); // flow/production statistics ------------------------------------------------------------ @@ -247,56 +246,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 factorioOutput(data){