package org.radargun.utils; import java.io.Serializable; import java.net.InetAddress; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * Holds the list of network interfaces and their IP addresses for a single slave. */ public class SlaveConnectionInfo implements Serializable { private int slaveIndex; private Map<String, ArrayList<InetAddress>> interfaceToAddrs = new HashMap<>(); public void addAddresses(int slaveIndex, String interfaceName, ArrayList<InetAddress> addresses) { this.slaveIndex = slaveIndex; interfaceToAddrs.put(interfaceName, addresses); } public List<InetAddress> getAddresses(String interfaceName) { return interfaceToAddrs.get(interfaceName); } public String getAddressesAsString(String interfaceName, String delimiter) { return String.join(delimiter, interfaceToAddrs.get(interfaceName).stream().map(addr -> addr.getHostAddress()).collect(Collectors.toList())); } public Set<String> getInterfaceNames() { return interfaceToAddrs.keySet(); } public int getSlaveIndex() { return slaveIndex; } /** * Used as a message ID for master-slave communication. */ public static class Request implements Serializable { } }