package org.jerlang; import java.util.HashMap; import java.util.Map; import org.jerlang.type.Atom; import org.jerlang.type.PidOrPortId; public class ProcessRegistry { private static final ProcessRegistry instance = new ProcessRegistry(); private final Map<Atom, PidOrPortId> processes; private final Map<PidOrPortId, ProcessOrPort> id2process; private ThreadLocal<ProcessOrPort> process = new ThreadLocal<>(); public ProcessRegistry() { processes = new HashMap<>(); id2process = new HashMap<>(); } public void cleanup() { processes.clear(); id2process.clear(); process = new ThreadLocal<>(); } public PidOrPortId get(Atom name) { return processes.get(name); } public static ProcessRegistry instance() { return instance; } public static void register(Atom name, PidOrPortId id) { instance.processes.put(name, id); } public static void register(Process process) { instance.id2process.put(process.id(), process); } public static ProcessOrPort resolve(PidOrPortId id) { return instance.id2process.get(id); } public static ProcessOrPort self() { return instance.process.get(); } public static void self(ProcessOrPort process) { instance.process.set(process); } }