removed SRSC

This commit is contained in:
Niklas Kapelle 2024-03-13 10:27:31 +01:00
parent e3875f76f6
commit 2ab5a38894
Signed by: niklas
GPG Key ID: 4EB651B36D841D16
2 changed files with 0 additions and 175 deletions

View File

@ -1,99 +0,0 @@
package bin.srsc;
import kernel.KernelSettings;
import kernel.net.Package.NetworkID;
import lib.CLIAppBase;
using tink.CoreApi;
class CLI extends CLIAppBase {
public function new() {
registerAsyncSubcommand("get", (args) -> {
if (args.length < 1) {
handle.writeLine("Not enough arguments");
return Future.sync(false);
}
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
return rpc.get(args[0]).map((res) -> {
switch (res) {
case Success(data):
if (data == null) {
handle.writeLine("Not found");
} else {
handle.writeLine("Found: " + data);
}
case Failure(error):
handle.writeLine("Error: " + error);
}
return true;
});
}, "<name>");
registerAsyncSubcommand("register", (args) -> {
if (args.length < 2) {
handle.writeLine("Not enough arguments");
return Future.sync(false);
}
var id:NetworkID = Std.parseInt(args[1]);
if (id == null) {
handle.writeLine("Invalid id");
return Future.sync(false);
}
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
return rpc.register(args[0], id).map((res) -> {
switch (res) {
case Success(data):
handle.writeLine("Success");
case Failure(error):
handle.writeLine("Error: " + error);
}
return true;
});
}, "<name> <id>");
registerAsyncSubcommand("unregister", (args) -> {
if (args.length < 1) {
handle.writeLine("Not enough arguments");
return Future.sync(false);
}
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
// FIXME
return Future.sync(true);
// return rpc.unregister(args[0]).map((res) -> {
// switch (res) {
// case Success(_):
// handle.writeLine("Success");
// case Failure(error):
// handle.writeLine("Error: " + error);
// }
// return true;
// });
}, "<name>");
registerAsyncSubcommand("list", (args) -> {
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
return rpc.list().map((res) -> {
switch (res) {
case Success(data):
for (name in data) {
handle.writeLine(name);
}
case Failure(error):
handle.writeLine("Error: " + error);
}
return true;
});
});
}
}

View File

@ -1,76 +0,0 @@
package bin.srsc;
import macros.rpc.RPC;
import lib.KVStore;
import kernel.net.Package;
import kernel.ps.ProcessHandle;
import kernel.ps.Process;
using tink.CoreApi;
/**
The SiteRessourceController is responsible for the management of ressources on the site.
It makes sure that ressources are have a unique id and that they are not duplicated.
It also keeps track of the responsible NetID for each ressource. Kinda like a DNS.
**/
@:build(macros.rpc.RPC.buildRPC())
class SiteRessourceController implements Process {
private var handle:ProcessHandle;
private var ressources:Map<String, NetworkID>;
public function new() {}
public function run(handle:ProcessHandle) {
this.handle = handle;
load();
RPC.generateRPCPackageHandle();
}
@rpc
public function register(name:String, netID:NetworkID):Bool {
if (ressources.exists(name) && ressources.get(name) != netID) {
return false;
}
ressources.set(name, netID);
save();
return true;
}
@rpc
public function unregister(name:String):Void {
if (ressources.exists(name)) {
ressources.remove(name);
}
save();
}
@rpc
public function get(name:String):Null<NetworkID> {
return ressources.get(name);
}
@rpc
public function list():Array<String> {
return [for (k in ressources.keys()) k];
}
private function load() {
var store = KVStore.getStoreForClass();
var data:Null<Map<String, NetworkID>> = store.get("ressources");
if (data != null) {
this.ressources = data;
} else {
this.ressources = new Map<String, NetworkID>();
}
}
private function save() {
var store = KVStore.getStoreForClass();
store.set("ressources", this.ressources);
store.save();
}
}