package org.infinispan.lucene;
import org.infinispan.distribution.ch.AffinityTaggedKey;
/**
* Mostly used for internal abstraction: common type for all keys which need name scoping for different indexes.
*
* @author Sanne Grinovero
* @since 5.2
*/
public interface IndexScopedKey extends AffinityTaggedKey {
/**
* Different indexes are required to use different names
* @return
*/
String getIndexName();
/**
* This numeric id is used exclusively for storage affinity in Infinispan.
* It is not included in the equals and hashcode implementations!
* @return the segment id as defined in {@link org.infinispan.lucene.directory.BuildContext#affinityLocationIntoSegment(int)}, or -1 when not explicitly set.
*/
int getAffinitySegmentId();
<T> T accept(KeyVisitor<T> visitor) throws Exception;
}