From 7c846abb658c51c85795c45d5ccc36a99915246d Mon Sep 17 00:00:00 2001 From: BrokenName <brokenname@kfee-programming.com> Date: Mon, 27 Dec 2021 10:06:38 -0800 Subject: [PATCH 1/3] DRY: Consolidated the code for retrieving a port so it will give consistent errors. --- src/NetscriptFunctions.ts | 102 ++++++++++---------------------------- 1 file changed, 26 insertions(+), 76 deletions(-) diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index 83a4335ac..db4d1a0fe 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -70,6 +70,7 @@ import { NetscriptCodingContract } from "./NetscriptFunctions/CodingContract"; import { NetscriptCorporation } from "./NetscriptFunctions/Corporation"; import { NetscriptFormulas } from "./NetscriptFunctions/Formulas"; import { NetscriptStockMarket } from "./NetscriptFunctions/StockMarket"; +import { IPort } from "./NetscriptPort"; import { NS as INS, @@ -442,6 +443,26 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { getServer: safeGetServer, checkSingularityAccess: checkSingularityAccess, hack: hack, + getValidPort: (funcName:string, port: any): IPort => { + if (isNaN(port)) { + throw makeRuntimeErrorMsg( + funcName, + `Invalid argument. Must be a port number between 1 and ${CONSTANTS.NumNetscriptPorts}, is ${port}`, + ); + } + port = Math.round(port); + if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { + throw makeRuntimeErrorMsg( + funcName, + `Trying to write to invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`, + ); + } + const iport = NetscriptPorts[port - 1]; + if (iport == null || !(iport instanceof Object)) { + throw makeRuntimeErrorMsg(funcName, `Could not find port: ${port}. This is a bug. Report to dev.`); + } + return iport; + } }; const gang = NetscriptGang(Player, workerScript, helper); @@ -1737,25 +1758,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return res; }, writePort: function (port: any, data: any = ""): any { - // Write to port - // Port 1-10 - if (typeof data !== "string" && typeof data !== "number") { - throw makeRuntimeErrorMsg( - "writePort", - `Trying to write invalid data to a port: only strings and numbers are valid.`, - ); - } - port = Math.round(port); - if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { - throw makeRuntimeErrorMsg( - "writePort", - `Trying to write to invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`, - ); - } - const iport = NetscriptPorts[port - 1]; - if (iport == null || !(iport instanceof Object)) { - throw makeRuntimeErrorMsg("writePort", `Could not find port: ${port}. This is a bug. Report to dev.`); - } + const iport = helper.getValidPort("writePort", port); return Promise.resolve(iport.write(data)); }, write: function (port: any, data: any = "", mode: any = "a"): any { @@ -1832,18 +1835,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { }, readPort: function (port: any): any { // Read from port - // Port 1-10 - port = Math.round(port); - if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { - throw makeRuntimeErrorMsg( - "readPort", - `Invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`, - ); - } - const iport = NetscriptPorts[port - 1]; - if (iport == null || !(iport instanceof Object)) { - throw makeRuntimeErrorMsg("readPort", `Could not find port: ${port}. This is a bug. Report to dev.`); - } + const iport = helper.getValidPort("readPort", port); const x = iport.read(); return x; }, @@ -1878,23 +1870,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { }, peek: function (port: any): any { updateDynamicRam("peek", getRamCost("peek")); - if (isNaN(port)) { - throw makeRuntimeErrorMsg( - "peek", - `Invalid argument. Must be a port number between 1 and ${CONSTANTS.NumNetscriptPorts}, is ${port}`, - ); - } - port = Math.round(port); - if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { - throw makeRuntimeErrorMsg( - "peek", - `Invalid argument. Must be a port number between 1 and ${CONSTANTS.NumNetscriptPorts}, is ${port}`, - ); - } - const iport = NetscriptPorts[port - 1]; - if (iport == null || !(iport instanceof Object)) { - throw makeRuntimeErrorMsg("peek", `Could not find port: ${port}. This is a bug. Report to dev.`); - } + const iport = helper.getValidPort("peek", port); const x = iport.peek(); return x; }, @@ -1918,38 +1894,12 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { }, clearPort: function (port: any): any { // Clear port - port = Math.round(port); - if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { - throw makeRuntimeErrorMsg( - "clear", - `Trying to clear invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid`, - ); - } - const iport = NetscriptPorts[port - 1]; - if (iport == null || !(iport instanceof Object)) { - throw makeRuntimeErrorMsg("clear", `Could not find port: ${port}. This is a bug. Report to dev.`); - } + const iport = helper.getValidPort("clearPort", port); return iport.clear(); }, getPortHandle: function (port: any): any { updateDynamicRam("getPortHandle", getRamCost("getPortHandle")); - if (isNaN(port)) { - throw makeRuntimeErrorMsg( - "getPortHandle", - `Invalid port: ${port} Must be an integer between 1 and ${CONSTANTS.NumNetscriptPorts}.`, - ); - } - port = Math.round(port); - if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { - throw makeRuntimeErrorMsg( - "getPortHandle", - `Invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`, - ); - } - const iport = NetscriptPorts[port - 1]; - if (iport == null || !(iport instanceof Object)) { - throw makeRuntimeErrorMsg("getPortHandle", `Could not find port: ${port}. This is a bug. Report to dev.`); - } + const iport = helper.getValidPort("getPortHandle", port); return iport; }, rm: function (fn: any, hostname: any): any { From 90ca9407d5b46d220472ceaabb78b62c7ed9b011 Mon Sep 17 00:00:00 2001 From: BrokenName <brokenname@kfee-programming.com> Date: Mon, 27 Dec 2021 10:38:00 -0800 Subject: [PATCH 2/3] Update NetscriptFunctions.ts Undid removal of writePort data validation --- src/NetscriptFunctions.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index db4d1a0fe..493aa3181 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -1758,6 +1758,12 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { return res; }, writePort: function (port: any, data: any = ""): any { + if (typeof data !== "string" && typeof data !== "number") { + throw makeRuntimeErrorMsg( + "writePort", + `Trying to write invalid data to a port: only strings and numbers are valid.`, + ); + } const iport = helper.getValidPort("writePort", port); return Promise.resolve(iport.write(data)); }, From b13f146bc333366cb8f151f3a7ae77c657396998 Mon Sep 17 00:00:00 2001 From: ErzengelLichtes <erzengel.des.lichtes@gmail.com> Date: Mon, 27 Dec 2021 11:36:14 -0800 Subject: [PATCH 3/3] Changed writing specific text to be more generic --- src/NetscriptFunctions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index 493aa3181..823b5533d 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -454,7 +454,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS { if (port < 1 || port > CONSTANTS.NumNetscriptPorts) { throw makeRuntimeErrorMsg( funcName, - `Trying to write to invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`, + `Trying to use an invalid port: ${port}. Only ports 1-${CONSTANTS.NumNetscriptPorts} are valid.`, ); } const iport = NetscriptPorts[port - 1];