pekko/akka-distributed-data/src/main/protobuf/ReplicatedDataMessages.proto
Patrik Nordwall b700b840d1 causal delivery of deltas, #22188
* keep track of delta interval versions and skip deltas
  that are not consequtive, i.e. when some delta message was lost
* send the delta versions in the full state gossip to sync up the
  expected versions after dropped deltas
* implementation of deltas for ORSet
* refactoring of the delta types to allow for different type for the
  delta and the full state
* extensive tests
* mima filter
* performance optimizations
* simple pruning of deltas
* Java API
* update documentation
* KeyId type alias
* Use InternalApi annotation
2017-02-22 14:27:36 +01:00

118 lines
2.4 KiB
Protocol Buffer

/**
* Copyright (C) 2014-2017 Lightbend Inc. <http://www.lightbend.com>
*/
package akka.cluster.ddata;
option java_package = "akka.cluster.ddata.protobuf.msg";
option optimize_for = SPEED;
import "ReplicatorMessages.proto";
message GSet {
repeated string stringElements = 1;
repeated sint32 intElements = 2 [packed=true];
repeated sint64 longElements = 3 [packed=true];
repeated OtherMessage otherElements = 4;
}
message ORSet {
required VersionVector vvector = 1;
repeated VersionVector dots = 2;
repeated string stringElements = 3;
repeated sint32 intElements = 4 [packed=true];
repeated sint64 longElements = 5 [packed=true];
repeated OtherMessage otherElements = 6;
}
message ORSetDeltaGroup {
message Entry {
required ORSetDeltaOp operation = 1;
required ORSet underlying = 2;
}
repeated Entry entries = 1;
}
enum ORSetDeltaOp {
Add = 0;
Remove = 1;
Full = 2;
}
message Flag {
required bool enabled = 1;
}
message LWWRegister {
required sint64 timestamp = 1;
required UniqueAddress node = 2;
required OtherMessage state = 3;
}
message GCounter {
message Entry {
required UniqueAddress node = 1;
required bytes value = 2;
}
repeated Entry entries = 1;
}
message PNCounter {
required GCounter increments = 1;
required GCounter decrements = 2;
}
message ORMap {
message Entry {
optional string stringKey = 1;
required OtherMessage value = 2;
optional sint32 intKey = 3;
optional sint64 longKey = 4;
optional OtherMessage otherKey = 5;
}
required ORSet keys = 1;
repeated Entry entries = 2;
}
message LWWMap {
message Entry {
optional string stringKey = 1;
required LWWRegister value = 2;
optional sint32 intKey = 3;
optional sint64 longKey = 4;
optional OtherMessage otherKey = 5;
}
required ORSet keys = 1;
repeated Entry entries = 2;
}
message PNCounterMap {
message Entry {
optional string stringKey = 1;
required PNCounter value = 2;
optional sint32 intKey = 3;
optional sint64 longKey = 4;
optional OtherMessage otherKey = 5;
}
required ORSet keys = 1;
repeated Entry entries = 2;
}
message ORMultiMap {
message Entry {
optional string stringKey = 1;
required ORSet value = 2;
optional sint32 intKey = 3;
optional sint64 longKey = 4;
optional OtherMessage otherKey = 5;
}
required ORSet keys = 1;
repeated Entry entries = 2;
}