public ClusterNode elect(List<ClusterNode> candidates) { int size = candidates.size(); int remainder = ((this.mPosition % size) + size) % size; ClusterNode result = candidates.get(remainder); if (LOG.isDebugEnabled()) { LOG.debug("election with " + size + " nodes and position=" + mPosition + ", will choose node[" +remainder+"] picked node ip=" + result.getIpAddress() + " port=" + result.getPort()); } return result; } }
/** Use reflection to access the address InetAddress and port if they exist * in the Address implementation */ private AddressPort getMemberAddress(Object addr) { AddressPort info = null; try { org.jboss.ha.framework.interfaces.ClusterNode node = (org.jboss.ha.framework.interfaces.ClusterNode) addr; InetAddress inetAddr = node.getIpAddress(); Integer port = new Integer(node.getPort()); info = new AddressPort(inetAddr, port); } catch (Exception e) { this.log.warn("Failed to obtain InetAddress/port from addr: " + addr, e); } return info; } }