package net.rubyeye.xmemcached.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import com.google.code.yanf4j.core.Session;
import net.rubyeye.xmemcached.MemcachedSessionLocator;
/**
* A random session locator,it can be used in kestrel.
*
* @author dennis<killme2008@gmail.com>
*
*/
public class RandomMemcachedSessionLocaltor implements MemcachedSessionLocator {
private transient volatile List<Session> sessions = Collections.emptyList();
private final Random rand = new Random();
public Session getSessionByKey(String key) {
List<Session> copiedOnWrite = sessions;
if (copiedOnWrite == null || copiedOnWrite.isEmpty())
return null;
return copiedOnWrite.get(rand.nextInt(copiedOnWrite.size()));
}
public void updateSessions(Collection<Session> list) {
this.sessions = new ArrayList<Session>(list);
}
public void setFailureMode(boolean failureMode) {
// ignore
}
}