Index: blimp/common/proto/helium.proto |
diff --git a/blimp/common/proto/helium.proto b/blimp/common/proto/helium.proto |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e790f5c2214f65ecab2a9d3ae03879ae0ea230ff |
--- /dev/null |
+++ b/blimp/common/proto/helium.proto |
@@ -0,0 +1,54 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// Over-the-wire message definitions used for the Helium |
+// synchronization protocol. |
+ |
+syntax = "proto2"; |
scf
2016/09/28 17:17:59
use proto3 as you describe no?
|
+ |
+option optimize_for = LITE_RUNTIME; |
+ |
+import "blimp_message.proto"; |
+ |
+package blimp.proto; |
scf
2016/09/28 17:18:00
i've noticed other proto files use "package blimp"
|
+ |
+// A FIFO queue of BlimpMessages, for compatibility with features which use |
+// the legacy protocol. Should be removed once all features use Helium. |
+message TransitionalChangeset { |
scf
2016/09/28 17:17:59
rename it to LegacyChangeset?
perumaal
2016/09/28 23:31:30
I am confused. Wouldn't you want to wrap a HeliumM
|
+ repeated BlimpMessage messages = 1; |
+} |
+ |
+message HeliumRevision { |
scf
2016/09/28 17:18:00
Call it HeliumVectorClock so that it matches the c
|
+ optional int32 local_revision = 1; |
scf
2016/09/28 17:18:00
uint32 so that matches the VectorClock
|
+ optional int32 remote_revision = 2; |
+} |
+ |
+message HeliumChangeset { |
+ oneof changes { TransitionalChangeset transitional = 1; } |
+} |
+ |
+message HeliumMessage { |
+ // Identifies the local revision that this changeset applies to (relative |
+ // to the sender), and the remote revision that the local side most recently |
+ // received (i.e. an ACK, in effect). |
+ // Note that the local revision can usually be inferred rather than actually |
+ // sent on the wire. Similarly the remote revision may be omitted if it |
+ // hasn’t changed since the last changeset was sent. |
+ optional HeliumRevision reference_revision = 1; |
scf
2016/09/28 17:17:59
i like calling from/to as it matches the sync_mana
|
+ |
+ // Provides the local view of the vector-clock following application of |
+ // the changeset. This allows a single changeset to collate changes across |
+ // several revisions, following a break in connectivity, rather than simply |
+ // re-transmitting the lost changesets. |
+ // Note that this can usually be inferred rather than send on-the-wire. |
+ optional HeliumRevision changeset_revision = 2; |
+ |
+ // Identifies the Object to which this changeset applies. |
+ // Note that this may be omitted if the previous message on this Stream |
+ // was for the same Object. |
+ optional int32 object_id = 3; |
scf
2016/09/28 17:17:59
change to uint32 for consistency with HeliumObject
|
+ |
+ // Changeset to be applied to the relevant Object. |
+ optional HeliumChangeset changeset = 4; |
+} |