public class Reachability
extends java.lang.Object
implements scala.Serializable
Immutable data structure that holds the reachability status of subject nodes as seen from observer nodes. Failure detector for the subject nodes exist on the observer nodes. Changes (reachable, unreachable, terminated) are only performed by observer nodes to its own records. Each change bumps the version number of the record, and thereby it is always possible to determine which record is newest when merging two instances.
Aggregated status of a subject node is defined as (in this order): - Terminated if any observer node considers it as Terminated - Unreachable if any observer node considers it as Unreachable - Reachable otherwise, i.e. no observer node considers it as Unreachable
Modifier and Type | Class and Description |
---|---|
static interface |
Reachability.ReachabilityStatus |
static class |
Reachability.Reachable$ |
static class |
Reachability.Record |
static class |
Reachability.Record$ |
static class |
Reachability.Terminated$ |
static class |
Reachability.Unreachable$ |
Modifier and Type | Method and Description |
---|---|
scala.collection.immutable.Set<UniqueAddress> |
allObservers() |
scala.collection.immutable.Set<UniqueAddress> |
allUnreachable()
Doesn't include terminated
|
scala.collection.immutable.Set<UniqueAddress> |
allUnreachableFrom(UniqueAddress observer)
Doesn't include terminated
|
scala.collection.immutable.Set<UniqueAddress> |
allUnreachableOrTerminated() |
static Reachability |
apply(scala.collection.immutable.IndexedSeq<Reachability.Record> records,
scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions) |
static Reachability |
create(scala.collection.immutable.Seq<Reachability.Record> records,
scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions) |
static Reachability |
empty() |
boolean |
equals(java.lang.Object obj) |
int |
hashCode() |
boolean |
isAllReachable() |
boolean |
isReachable(UniqueAddress node) |
boolean |
isReachable(UniqueAddress observer,
UniqueAddress subject) |
Reachability |
merge(scala.collection.immutable.Set<UniqueAddress> allowed,
Reachability other) |
scala.collection.immutable.Map<UniqueAddress,scala.collection.immutable.Set<UniqueAddress>> |
observersGroupedByUnreachable() |
Reachability |
reachable(UniqueAddress observer,
UniqueAddress subject) |
scala.collection.immutable.IndexedSeq<Reachability.Record> |
records() |
scala.collection.immutable.IndexedSeq<Reachability.Record> |
recordsFrom(UniqueAddress observer) |
Reachability |
remove(scala.collection.Iterable<UniqueAddress> nodes) |
Reachability |
removeObservers(scala.collection.immutable.Set<UniqueAddress> nodes) |
Reachability.ReachabilityStatus |
status(UniqueAddress node) |
Reachability.ReachabilityStatus |
status(UniqueAddress observer,
UniqueAddress subject) |
Reachability |
terminated(UniqueAddress observer,
UniqueAddress subject) |
java.lang.String |
toString() |
Reachability |
unreachable(UniqueAddress observer,
UniqueAddress subject) |
scala.collection.immutable.Map<UniqueAddress,java.lang.Object> |
versions() |
public static Reachability empty()
public static Reachability apply(scala.collection.immutable.IndexedSeq<Reachability.Record> records, scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions)
public static Reachability create(scala.collection.immutable.Seq<Reachability.Record> records, scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions)
public scala.collection.immutable.IndexedSeq<Reachability.Record> records()
public scala.collection.immutable.Map<UniqueAddress,java.lang.Object> versions()
public Reachability unreachable(UniqueAddress observer, UniqueAddress subject)
public Reachability reachable(UniqueAddress observer, UniqueAddress subject)
public Reachability terminated(UniqueAddress observer, UniqueAddress subject)
public Reachability merge(scala.collection.immutable.Set<UniqueAddress> allowed, Reachability other)
public Reachability remove(scala.collection.Iterable<UniqueAddress> nodes)
public Reachability removeObservers(scala.collection.immutable.Set<UniqueAddress> nodes)
public Reachability.ReachabilityStatus status(UniqueAddress observer, UniqueAddress subject)
public Reachability.ReachabilityStatus status(UniqueAddress node)
public boolean isReachable(UniqueAddress node)
public boolean isReachable(UniqueAddress observer, UniqueAddress subject)
public boolean isAllReachable()
public scala.collection.immutable.Set<UniqueAddress> allUnreachable()
public scala.collection.immutable.Set<UniqueAddress> allUnreachableOrTerminated()
public scala.collection.immutable.Set<UniqueAddress> allUnreachableFrom(UniqueAddress observer)
observer
- (undocumented)public scala.collection.immutable.Map<UniqueAddress,scala.collection.immutable.Set<UniqueAddress>> observersGroupedByUnreachable()
public scala.collection.immutable.Set<UniqueAddress> allObservers()
public scala.collection.immutable.IndexedSeq<Reachability.Record> recordsFrom(UniqueAddress observer)
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object