package edu.berkeley.thebes.hat.client.clustering; import org.apache.thrift.TException; import org.apache.thrift.transport.TTransportException; import org.slf4j.LoggerFactory; import edu.berkeley.thebes.common.config.ConfigParameterTypes.RoutingMode; import edu.berkeley.thebes.common.data.DataItem; import edu.berkeley.thebes.common.data.Version; import edu.berkeley.thebes.common.thrift.ThriftDataItem; import java.io.IOException; public abstract class ReplicaRouter { public static ReplicaRouter newInstance(RoutingMode routingMode) throws IOException, TTransportException { switch (routingMode) { case NEAREST: return new NearestReplicaRouter(); case QUORUM: return new QuorumReplicaRouter(); case MASTERED: return new MasteredReplicaRouter(); default: throw new IllegalArgumentException(); } } abstract public boolean put(String key, DataItem value) throws TException; abstract public ThriftDataItem get(String key, Version requiredVersion) throws TException; }