kofre.decompose.containers

Members list

Concise view

Type members

Classlikes

trait AntiEntropy[A]

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
class AntiEntropyCRDT[State](val antiEntropy: AntiEntropy[State]) extends CRDTInterface[State, AntiEntropyCRDT[State]]

BasicCRDTs are Delta CRDTs that use JsoniterAntiEntropy and Network as Middleware for exchanging deltas between replicas. They cannot actually be used on multiple connected replicas, but are useful for locally testing the behavior of Delta CRDTs.

BasicCRDTs are Delta CRDTs that use JsoniterAntiEntropy and Network as Middleware for exchanging deltas between replicas. They cannot actually be used on multiple connected replicas, but are useful for locally testing the behavior of Delta CRDTs.

Generated deltas are automatically propagated to the registered JsoniterAntiEntropy instance, but to apply deltas received by the AntiEntropy instance you need to explicitly call processReceivedDeltas on the CRDT.

Attributes

Companion:
object
Graph
Supertypes
trait CRDTInterface[State, AntiEntropyCRDT[State]]
class Object
trait Matchable
class Any

Attributes

Companion:
class
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
trait CRDTInterface[State, Wrapper]

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class AntiEntropyCRDT[State]
class DeltaBufferRDT[State]

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
class DeltaBufferRDT[State](val state: Dotted[State], val replicaID: String, val deltaBuffer: List[DottedName[State]]) extends CRDTInterface[State, DeltaBufferRDT[State]]

ReactiveCRDTs are Delta CRDTs that store applied deltas in their deltaBuffer attribute. Middleware should regularly take these deltas and ship them to other replicas, using applyDelta to apply them on the remote state. After deltas have been read and propagated by the middleware, it should call resetDeltaBuffer to empty the deltaBuffer.

ReactiveCRDTs are Delta CRDTs that store applied deltas in their deltaBuffer attribute. Middleware should regularly take these deltas and ship them to other replicas, using applyDelta to apply them on the remote state. After deltas have been read and propagated by the middleware, it should call resetDeltaBuffer to empty the deltaBuffer.

Attributes

Companion:
object
Graph
Supertypes
trait CRDTInterface[State, DeltaBufferRDT[State]]
class Object
trait Matchable
class Any

Attributes

Companion:
class
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
class Network(val lossChance: Double, val duplicateChance: Double, val delayChance: Double)

This class simulates an unreliable network that may lose, duplicate or delay messages. It was made together with AntiEntropy to locally test the correctness of Delta CRDTs in unreliable networks. The network can be made reliable for certain phases only by using the startReliablePhase and endReliablePhase methods.

This class simulates an unreliable network that may lose, duplicate or delay messages. It was made together with AntiEntropy to locally test the correctness of Delta CRDTs in unreliable networks. The network can be made reliable for certain phases only by using the startReliablePhase and endReliablePhase methods.

Attributes

delayChance

A value between 0 and 1 describing the likelihood that a message gets delayed during transfer, i.e. that it does not get retrieved in a call to receiveMessages. For example, assuming a lossChance of 0, in a network with delayChance 0 every message can be retrieved in the first call to receiveMessages after the message was sent, while in a network with delayChance 0.5 there is a 50% chance that the message is retrieved by the first call to receiveMessages, a 25% chance for the second call, a 12.5% chance for the third call and so on.

duplicateChance

A value between 0 and 1 describing the likelihood that a received message is duplicated, i.e. it is not removed from the internal buffer when it is passed on to the anti-entropy algorithm. Note that a message that was left in the buffer might be duplicated again the next time that messages are retrieved. For example, assuming a lossChance of 0, a network with duplicateChance 0 will deliver every message exactly once, while a network with duplicateChance 0.5 delivers a message just once with a 50% chance, twice with a 25% chance, three times with a 12.5% chance and so on.

lossChance

A value between 0 and 1 describing the likelihood that a message is lost in transfer. For example, a network with lossChance 0 will deliver every message while a network with lossChance 0.5 will lose 50% of all messages.

Graph
Supertypes
class Object
trait Matchable
class Any