Package voldemort

Source Code of voldemort.StaticStoreClientFactory

package voldemort;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import voldemort.client.DefaultStoreClient;
import voldemort.client.StoreClient;
import voldemort.client.StoreClientFactory;
import voldemort.cluster.failuredetector.FailureDetector;
import voldemort.cluster.failuredetector.NoopFailureDetector;
import voldemort.store.Store;
import voldemort.store.stats.StoreClientFactoryStats;
import voldemort.versioning.InconsistencyResolver;
import voldemort.versioning.Versioned;

/**
* A simple test store client factory that returns stores from a predetermined
* list.
*
* If the factory is supplied with N stores then the first N calls to
* getRawStore will return the stores in succession. After that all calls will
* return the Nth store.
*
* This is intended to help simultate things like MetadataExceptions which may
* require having an out-of-date Store.
*
*
*/
public class StaticStoreClientFactory implements StoreClientFactory {

    private final AtomicInteger current;
    private final List<Store<?, ?, ?>> stores;
    private final FailureDetector failureDetector;
    private final StoreClientFactoryStats staticStoreClientFactoryStats;

    public StaticStoreClientFactory(Store<?, ?, ?>... stores) {
        if(stores.length < 1)
            throw new IllegalArgumentException("Must provide at least one store.");
        this.stores = Arrays.asList(stores);
        current = new AtomicInteger(0);
        failureDetector = new NoopFailureDetector();
        staticStoreClientFactoryStats = new StoreClientFactoryStats();
    }

    @SuppressWarnings("unchecked")
    public <K, V, T> Store<K, V, T> getRawStore(String storeName,
                                                InconsistencyResolver<Versioned<V>> resolver) {
        return (Store<K, V, T>) stores.get(Math.max(current.getAndIncrement(), stores.size() - 1));
    }

    @SuppressWarnings("unchecked")
    public <K, V> StoreClient<K, V> getStoreClient(String storeName) {
        return new DefaultStoreClient(storeName, null, this, 3);
    }

    @SuppressWarnings("unchecked")
    public <K, V> StoreClient<K, V> getStoreClient(String storeName,
                                                   InconsistencyResolver<Versioned<V>> resolver) {
        return new DefaultStoreClient(storeName, resolver, this, 3);
    }

    public void close() {
        for(Store<?, ?, ?> store: stores)
            store.close();
    }

    public FailureDetector getFailureDetector() {
        return failureDetector;
    }
}
TOP

Related Classes of voldemort.StaticStoreClientFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.