NoIssue: Incorrect interface fix

This commit is contained in:
2026-01-27 11:20:00 +01:00
parent 313618f7a0
commit 4d2ddcfcd3

View File

@@ -2,17 +2,61 @@ 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 org.jetbrains.annotations.NotNull;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
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(String s) { public void startProcess(@NotNull String fqInterfaceName) {
ClassLoader loader = ClassLoader.getSystemClassLoader();
int processId = nextProcessId.getAndIncrement();
Thread t = Thread.startVirtualThread(() -> {
try {
Class<?> clazz = loader.loadClass(fqInterfaceName);
if (!NenjimProcess.class.isAssignableFrom(clazz)) {
throw new IllegalArgumentException("'" + fqInterfaceName + "' does NOT implement NenjimProcess");
}
NenjimProcess proc = (NenjimProcess) clazz.getDeclaredConstructor().newInstance();
processes.put(processId, proc);
// TODO: lav dine rigtige typer her
var context = new Context() {};
//proc.setNenjimProcessContext(context);
//proc.setNenjimHub(this);
//Thread.currentThread().setName(proc.getProcessName());
//System.out.println(" Starter Nenjim process '" + proc.getProcessName() + "' (#" + processId + ")");
proc.run();
} catch (Throwable e) {
System.err.println(" Process #" + processId + " crashed: " + e);
e.printStackTrace();
} finally {
processThreads.remove(processId);
processes.remove(processId);
}
});
processThreads.put(processId, t);
} }
@Override @Override
public HashMap<Integer, NenjimProcess> getRunningProcesses() { public @NotNull HashMap<Integer, NenjimProcess> getRunningProcesses() {
return null; return new HashMap<>(processes);
} }
@Override @Override