package protocol
- Alphabetic
- Public
- All
Type Members
-
class
AnonymousRounds extends ReactiveProtocol
Support for protocols working in a model of anonymous rounds.
-
class
ArbitraryTopology extends ReactiveProtocol with Topology with LazyLogging
Support for simulating arbitrary network topologies.
Support for simulating arbitrary network topologies.
The topologyDescriptor is given as a graph (see http://www.scala-graph.org/api/core/api/#scalax.collection.Graph). A message sent by a process p is delivered to another process q only if q is a neighbor of p in the graph. The protocol can also be queried through the neko.util.Topology trait, to obtain the set of neighbors
By default, the topologyDescriptor is a clique of all the processes, but other ready-made graphs can also be found in neko.util.Topology.
-
class
FIFOChannel extends ReactiveProtocol
Implements multi-party FIFO channels.
Implements multi-party FIFO channels.
The protocol ensures that all messages sent from a process p to a process q are delivered by q in the same order they were sent by p.
The protocol is not thread-safe if each process has more than one send thread or more than one receive thread. Fortunately, this is the case as long as each neko.NekoProcess has only one protocol neko.ActiveProtocol and doesn't use timers, which is the most common case for examples used in the lecture I445. A real-world implementation would however need to be made thread-safe.
-
class
FastAnonymousRounds extends ReactiveProtocol
Support for protocols working in a model of anonymous rounds.
Support for protocols working in a model of anonymous rounds.
The relevant signals are as follows:
- FastAnonymousRounds#InitRound is sent once at the beginning to start the initial round.
- FastAnonymousRounds#StartRound is sent at the beginning of each round and indicates:
- the round number
- the information sent by the processes in the previous round. To distinguish the information sent by "me", a protocol must keep it in its own state.
- FastAnonymousRounds#Done is sent by a protocol to indicate that the computation is finished.
-
class
LamportClock extends ReactiveProtocol with LogicalClock[Long]
Support for Lamport clocks.
-
class
RoundBased extends ReactiveProtocol with LazyLogging
Support for round-based protocols.
Support for round-based protocols.
Round-based protocols start with an internal event neko.protocol.RoundBased.InitRound, during which they send exactly one message to each other process, including themselves. This can be done through a broadcast, or through separate calls to neko.Receiving#SEND.
After that, each round starts with an internal event neko.protocol.RoundBased.StartRound, which carries the number of the round, as well as a set of messages (one from each of the processes), which were sent during the previous round.
- class RoundBasedWithFailures extends ReactiveProtocol
-
class
SafraTerminationDetection extends ReactiveProtocol
Algorithm to detect the termination of a distributed computation.
Algorithm to detect the termination of a distributed computation.
The algorithm implemented in this protocol is not restricted to diffusing computations, does not require FIFO channels, but works only on a fully connected network topologyDescriptor (although an adaptation to arbitrary topologyDescriptor is feasible).
- class SynchronousRounds extends ActiveProtocol with Sending
-
class
VectorClock extends ReactiveProtocol with LogicalClock[IndexedSeq[Long]]
Support for vector clocks.
Value Members
- object AnonymousRounds
- object ArbitraryTopology
- object FIFOChannel
- object FastAnonymousRounds
- object LamportClock
- object RoundBased
- object RoundBasedWithFailures
- object SafraTerminationDetection
- object SynchronousRounds
- object VectorClock