package org.jerlang.erts.epmd; import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class NodeRegistry { private Map<String, Node> nodes = new ConcurrentHashMap<>(); private Map<String, Node> unreg = new ConcurrentHashMap<>(); public void register(Node node) { nodes.put(node.nodeName(), node); unreg.remove(node.nodeName()); } public void unregister(Node node) { nodes.remove(node.nodeName()); unreg.put(node.nodeName(), node); } public String names() { StringBuilder stringBuilder = new StringBuilder(); list(stringBuilder, nodes.values(), "name ", "\n"); return stringBuilder.toString(); } public String dump() { StringBuilder stringBuilder = new StringBuilder(); list(stringBuilder, nodes.values(), "active name ", ", fd = 0\n"); list(stringBuilder, unreg.values(), "old/unused name ", ", fd = 0 \n"); return stringBuilder.toString(); } private static void list(StringBuilder sb, Collection<Node> nodes, String prefix, String suffix) { for (Node node : nodes) { sb.append(prefix).append(node.nodeName()); sb.append(" at port ").append(node.portNo()).append(suffix); } } }