public NodeLocator getReadonlyCopy() { TreeMap<Long, MemcachedNode> smn = new TreeMap<Long, MemcachedNode>(getKetamaNodes()); Collection<MemcachedNode> an = new ArrayList<MemcachedNode>(allNodes.size()); // Rewrite the values a copy of the map. for (Map.Entry<Long, MemcachedNode> me : smn.entrySet()) { smn.put(me.getKey(), new MemcachedNodeROImpl(me.getValue())); } // Copy the allNodes collection. for (MemcachedNode n : allNodes) { an.add(new MemcachedNodeROImpl(n)); } return new RefinedKetamaNodeLocator(smn, an, hashAlg, weights, config); }
@Override public NodeLocator createLocator(List<MemcachedNode> nodes) { switch (locator) { case ARRAY_MOD: return new ArrayModNodeLocator(nodes, getHashAlg()); case CONSISTENT: return new RefinedKetamaNodeLocator(nodes, getHashAlg()); default: throw new IllegalStateException("Unhandled locator type: " + locator); } }
public NodeLocator getReadonlyCopy() { TreeMap<Long, MemcachedNode> smn = new TreeMap<Long, MemcachedNode>(getKetamaNodes()); Collection<MemcachedNode> an = new ArrayList<MemcachedNode>(allNodes.size()); // Rewrite the values a copy of the map. for (Map.Entry<Long, MemcachedNode> me : smn.entrySet()) { smn.put(me.getKey(), new MemcachedNodeROImpl(me.getValue())); } // Copy the allNodes collection. for (MemcachedNode n : allNodes) { an.add(new MemcachedNodeROImpl(n)); } return new RefinedKetamaNodeLocator(smn, an, hashAlg, weights, config); }
@Override public NodeLocator createLocator(List<MemcachedNode> nodes) { switch (locator) { case ARRAY_MOD: return new ArrayModNodeLocator(nodes, getHashAlg()); case CONSISTENT: return new RefinedKetamaNodeLocator(nodes, getHashAlg()); default: throw new IllegalStateException("Unhandled locator type: " + locator); } }