diff --git a/bsnes/target-bsnes/bsnes.cpp b/bsnes/target-bsnes/bsnes.cpp index f27920f7..d11a596d 100644 --- a/bsnes/target-bsnes/bsnes.cpp +++ b/bsnes/target-bsnes/bsnes.cpp @@ -30,10 +30,12 @@ auto nall::main(Arguments arguments) -> void { Application::locale().select(argument.trimLeft("--locale=", 1L)); } else if(argument.beginsWith("--settings=")) { settings.location = argument.trimLeft("--settings=", 1L); - } else if(inode::exists(argument)) { + } else if(argument.beginsWith("--rpcPort=")) { + program.rpcServerPort = std::stoi(std::string(argument.trimLeft("--rpcPort=").data())); + } else if (inode::exists(argument)) { //game without option program.gameQueue.append({"Auto;", argument}); - } else if(argument.find(";")) { + } else if (argument.find(";")) { //game with option auto game = argument.split(";", 1L); if(inode::exists(game.last())) program.gameQueue.append(argument); diff --git a/bsnes/target-bsnes/program/program.hpp b/bsnes/target-bsnes/program/program.hpp index 62197dd7..79b48a40 100644 --- a/bsnes/target-bsnes/program/program.hpp +++ b/bsnes/target-bsnes/program/program.hpp @@ -225,6 +225,7 @@ public: ProducerConsumerQueue pendingRpcCommands; nall::HTTP::Server rpcServer; + int rpcServerPort = 0; bool fastForwarding = false; bool rewinding = false; diff --git a/bsnes/target-bsnes/program/rpc.cpp b/bsnes/target-bsnes/program/rpc.cpp index 50aae8e4..7109a91d 100644 --- a/bsnes/target-bsnes/program/rpc.cpp +++ b/bsnes/target-bsnes/program/rpc.cpp @@ -1,7 +1,9 @@ #include auto Program::startRpcListener() -> void { - rpcServer.main([&](nall::HTTP::Request& rq) -> nall::HTTP::Response { + if (rpcServerPort < 1024) return; + + rpcServer.main([&](nall::HTTP::Request &rq) -> nall::HTTP::Response { nall::HTTP::Response resp; if (rq.requestType() != nall::HTTP::Request::RequestType::Post) { @@ -43,17 +45,20 @@ auto Program::startRpcListener() -> void { return true; }); - return resp; + return resp; }); - rpcServer.open(); + rpcServer.open(rpcServerPort); } auto Program::stopRpcListener() -> void { + if (rpcServerPort < 1024) return; rpcServer.close(); } auto Program::processRpcCommands() -> void { + if (rpcServerPort < 1024) return; + rpcServer.scan(); RpcCommand cmd;