All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.wildfly.clustering.infinispan.distribution.CacheKeyDistribution Maven / Gradle / Ivy

/*
 * Copyright The WildFly Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package org.wildfly.clustering.infinispan.distribution;

import java.util.List;

import org.infinispan.Cache;
import org.infinispan.distribution.DistributionManager;
import org.infinispan.distribution.ch.KeyPartitioner;
import org.infinispan.remoting.transport.Address;

/**
 * Key distribution appropriate for any cache mode.
 * @author Paul Ferraro
 */
public class CacheKeyDistribution implements KeyDistribution {

    private final DistributionManager distribution;
    private final KeyPartitioner partitioner;

    @SuppressWarnings("deprecation")
    public CacheKeyDistribution(Cache cache) {
        this.distribution = cache.getAdvancedCache().getDistributionManager();
        this.partitioner = cache.getAdvancedCache().getComponentRegistry().getLocalComponent(KeyPartitioner.class);
    }

    @Override
    public Address getPrimaryOwner(Object key) {
        return this.getCurrentKeyDistribution().getPrimaryOwner(key);
    }

    @Override
    public List
getOwners(Object key) { return this.getCurrentKeyDistribution().getOwners(key); } private KeyDistribution getCurrentKeyDistribution() { return (this.distribution != null) ? new ConsistentHashKeyDistribution(this.partitioner, this.distribution.getCacheTopology().getWriteConsistentHash()) : LocalKeyDistribution.INSTANCE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy