bitburner-src/src/Netscript/NetscriptWorker.js

39 lines
1.2 KiB
JavaScript
Raw Normal View History

/* Worker code, contains Netscript scripts that are actually running */
2016-11-30 00:38:50 +01:00
//TODO Need some way to stop scripts. Idea: Put a flag in the environment, we can setActive
//this flag from outside. If the evaluate() function sees that flag it rejects the current
// Promise. We can catch that rejection and stop the script.
//TODO Tested For and while and generic call statements. Have not tested if statements
/* Actual Worker Code */
function WorkerScript() {
2016-11-30 00:38:50 +01:00
this.name = "";
this.running = false;
this.serverIp = null;
2016-11-30 00:38:50 +01:00
this.code = "";
this.env = new Environment();
this.output = "";
}
//Array containing all scripts that are running across all servers, to easily run them all
var workerScripts = [];
//Loop through workerScripts and run every script that is not currently running
function runScriptsLoop() {
for (var i = 0; i < workerScripts.length; i++) {
if (workerScripts[i].running == false) {
var ast = Parser(Tokenizer(InputStream(workerScripts[i].code)));
console.log("Starting new script: " + workerScripts[i].name);
console.log("AST of new script:");
console.log(ast);
workerScripts[i].running = true;
2016-11-30 00:38:50 +01:00
evaluate(ast, workerScripts[i]);
}
}
setTimeout(runScriptsLoop, 10000);
}
runScriptsLoop();