package com.jivesoftware.os.amza.service.ring;
import com.jivesoftware.os.amza.api.ring.RingHost;
import com.jivesoftware.os.amza.api.ring.RingMember;
/**
*
* @author jonathan.colt
*/
public interface AmzaRingReader {
byte[] SYSTEM_RING = "system".getBytes();
RingMember getRingMember();
/*List<Entry<RingMember, RingHost>> getNeighbors(byte[] ringName) throws Exception;*/
RingTopology getRing(byte[] ringName, long timeoutInMillis) throws Exception;
RingSet getRingSet(RingMember ringMember, long timeoutInMillis) throws Exception;
int getRingSize(byte[] ringName, long timeoutInMillis) throws Exception;
int getTakeFromFactor(byte[] ringName, long timeoutInMillis) throws Exception;
void allRings(RingStream ringStream) throws Exception;
interface RingStream {
boolean stream(byte[] ringName, RingMember ringMember, RingHost ringHost) throws Exception;
}
void streamRingNames(RingMember ringMember, long timeoutInMillis, RingNameStream ringNameStream) throws Exception;
interface RingNameStream {
boolean stream(byte[] ringName, int ringHash) throws Exception;
}
}