NoIssue: Clean-up

This commit is contained in:
2026-01-28 11:57:55 +01:00
parent 6dd195c4c4
commit d33b3036a0

View File

@@ -3,6 +3,8 @@ package com.r35157.nenjim.kicker.impl.ref;
import com.r35157.nenjim.kicker.Kicker; import com.r35157.nenjim.kicker.Kicker;
import com.r35157.nenjim.kicker.NenjimProcess; import com.r35157.nenjim.kicker.NenjimProcess;
import com.r35157.nenjim.hubd.Context; import com.r35157.nenjim.hubd.Context;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.HashMap; import java.util.HashMap;
@@ -11,16 +13,14 @@ import java.util.concurrent.atomic.AtomicInteger;
public class KickerImpl implements Kicker { public class KickerImpl implements Kicker {
private final ConcurrentHashMap<Integer, NenjimProcess> processes = new ConcurrentHashMap<>();
private final ConcurrentHashMap<Integer, Thread> processThreads = new ConcurrentHashMap<>();
private final AtomicInteger nextProcessId = new AtomicInteger(1);
@Override @Override
public void startProcess(@NotNull String fqInterfaceName) { public void startProcess(@NotNull String fqInterfaceName) {
ClassLoader loader = ClassLoader.getSystemClassLoader(); ClassLoader loader = ClassLoader.getSystemClassLoader();
int processId = nextProcessId.getAndIncrement(); int processId = nextProcessId.getAndIncrement();
Thread t = Thread.startVirtualThread(() -> { final NenjimProcess proc;
final String procName;
try { try {
Class<?> clazz = loader.loadClass(fqInterfaceName); Class<?> clazz = loader.loadClass(fqInterfaceName);
@@ -28,23 +28,27 @@ public class KickerImpl implements Kicker {
throw new IllegalArgumentException("'" + fqInterfaceName + "' does NOT implement NenjimProcess"); throw new IllegalArgumentException("'" + fqInterfaceName + "' does NOT implement NenjimProcess");
} }
NenjimProcess proc = (NenjimProcess) clazz.getDeclaredConstructor().newInstance(); proc = (NenjimProcess) clazz.getDeclaredConstructor().newInstance();
procName = proc.getName();
} catch (Throwable e) {
log.error("Failed to create process '{}' (#{}).", fqInterfaceName, processId, e);
return;
}
processes.put(processId, proc); processes.put(processId, proc);
// TODO: lav dine rigtige typer her Context context = new Context(); log.warn("TODO: Set the Context here when we have one!");
var context = new Context() {}; proc.setContext(context);
//proc.setNenjimProcessContext(context); proc.setHub(null); log.warn("TODO: Set the HUB here when we have one!");
//proc.setNenjimHub(this);
//Thread.currentThread().setName(proc.getProcessName());
//System.out.println(" Starter Nenjim process '" + proc.getProcessName() + "' (#" + processId + ")");
Thread t = Thread.ofVirtual()
.name(procName)
.start(() -> {
try {
log.info("Starting process '{}' (#{})...", procName, processId);
proc.run(); proc.run();
} catch (Throwable e) { } catch (Throwable e) {
System.err.println(" Process #" + processId + " crashed: " + e); log.error("Process '{}' (#{}) crashed!", procName, processId, e);
e.printStackTrace();
} finally { } finally {
processThreads.remove(processId); processThreads.remove(processId);
processes.remove(processId); processes.remove(processId);
@@ -62,4 +66,10 @@ public class KickerImpl implements Kicker {
@Override @Override
public void noop() { public void noop() {
} }
private static final Logger log = LogManager.getLogger(KickerImpl.class);
private final ConcurrentHashMap<Integer, NenjimProcess> processes = new ConcurrentHashMap<>();
private final ConcurrentHashMap<Integer, Thread> processThreads = new ConcurrentHashMap<>();
private final AtomicInteger nextProcessId = new AtomicInteger(1);
} }