package voldemort.server.protocol;
import voldemort.VoldemortException;
import voldemort.server.RequestRoutingType;
import voldemort.server.StoreRepository;
import voldemort.store.ErrorCodeMapper;
import voldemort.store.Store;
import voldemort.utils.ByteArray;
/**
* A base class with a few helper fields for writing a
* {@link voldemort.server.protocol.RequestHandler}
*
*
*/
public abstract class AbstractRequestHandler implements RequestHandler {
private final ErrorCodeMapper errorMapper;
private final StoreRepository storeRepository;
protected AbstractRequestHandler(ErrorCodeMapper errorMapper, StoreRepository repository) {
this.errorMapper = errorMapper;
this.storeRepository = repository;
}
protected ErrorCodeMapper getErrorMapper() {
return errorMapper;
}
protected StoreRepository getStoreRepository() {
return storeRepository;
}
protected Store<ByteArray, byte[], byte[]> getStore(String name, RequestRoutingType type) {
switch(type) {
case ROUTED:
return storeRepository.getRoutedStore(name);
case NORMAL:
return storeRepository.getLocalStore(name);
case IGNORE_CHECKS:
return storeRepository.getStorageEngine(name);
}
throw new VoldemortException("Unhandled RoutingType found:" + type);
}
}