in swim/node.go [465:488]
func (n *Node) handleChanges(changes []Change) {
n.disseminator.AdjustMaxPropagations()
for _, change := range changes {
n.disseminator.RecordChange(change)
switch change.Status {
case Alive:
n.stateTransitions.Cancel(change)
case Suspect:
n.stateTransitions.ScheduleSuspectToFaulty(change)
case Faulty:
n.stateTransitions.ScheduleFaultyToTombstone(change)
case Leave:
// XXX: should this also reap?
n.stateTransitions.Cancel(change)
case Tombstone:
n.stateTransitions.ScheduleTombstoneToEvict(change)
}
}
}