summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2017-05-06 00:35:56 +0200
committerChristian Pointner <equinox@spreadspace.org>2017-05-06 00:35:56 +0200
commit4f0d1b60b09422dc3fbf94d6f853bf72fb6c7f9b (patch)
treeda793a4657b4cf1b11038c834af0b7522fc9048b
parentremove now uneeded retry for append (diff)
added additional protocol fields for forwarder hubs
-rw-r--r--doc/protocol.md16
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5store_test.go20
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5typesApi.go8
3 files changed, 30 insertions, 14 deletions
diff --git a/doc/protocol.md b/doc/protocol.md
index ff0cc51..29391c6 100644
--- a/doc/protocol.md
+++ b/doc/protocol.md
@@ -10,6 +10,10 @@ update messages.
{
"version": 1,
+ "SourceHubUuid": "f7df89b4-171e-4b2f-a8a4-e58ac99e5dc5",
+ "SourceHubDataUpdateId": 23,
+ "ForwardHubUuid": "b041315e-5039-4c75-81e8-9fd42250b011",
+ "ForwardHubDataUpdateId": 42,
"hostname": "myhostname",
"streamer-id": { "content-id": "av-orig", "format": "flash", "quality": "medium" },
"tags": [ "elevate", "2014", "discourse" ]
@@ -22,15 +26,17 @@ data-update
All values which have been defined by the init message are optional. In any case the
values from data updates override values from init. Stateless interfaces will not use
init messages and therefore all values must be defined here.
-If an interface (i.e. REST) has other means to detect protocol versions the version
-field may be omitted entirely.
-"SourceHubUuid", "SourceHubDataUpdateId", "user-agent", "bytes-received", "tags" and
-"clients" might be omitted and are treated as an empty string, 0 or empty array
-respectively.
+"SourceHubUuid", "SourceHubDataUpdateId", "ForwardHubUuid", "ForwardHubDataUpdateId",
+"user-agent", "bytes-received", "tags" and "clients" might be omitted and are treated
+as an empty string, 0 or empty array respectively.
The start-time will be processesd and stored with millisecond precision.
{
"version": 1,
+ "SourceHubUuid": "f7df89b4-171e-4b2f-a8a4-e58ac99e5dc5",
+ "SourceHubDataUpdateId": 23,
+ "ForwardHubUuid": "b041315e-5039-4c75-81e8-9fd42250b011",
+ "ForwardHubDataUpdateId": 42,
"hostname": "myhostname",
"streamer-id": { "content-id": "av-orig", "format": "flash", "quality": "medium" },
"tags": [ "elevate", "2014", "discourse" ]
diff --git a/src/hub/src/spreadspace.org/sfive/s5store_test.go b/src/hub/src/spreadspace.org/sfive/s5store_test.go
index 3284c87..91d51ee 100644
--- a/src/hub/src/spreadspace.org/sfive/s5store_test.go
+++ b/src/hub/src/spreadspace.org/sfive/s5store_test.go
@@ -303,7 +303,7 @@ func TestAppendAndFetch(t *testing.T) {
upd := updateData
upd.StartTime = time.Date(2014, time.August, 24, 14, 35, 33, 847000000, time.UTC)
upd.Data.Clients = clientsData
- in := DataUpdateFull{0, "", -1, sourceData, upd}
+ in := DataUpdateFull{0, "", -1, "", -1, sourceData, upd}
if err = store.Append(in); err != nil {
t.Fatalf("failed to append update: %v", err)
@@ -318,6 +318,8 @@ func TestAppendAndFetch(t *testing.T) {
expected := in
expected.SourceHubUuid = store.GetStoreId()
expected.SourceHubDataUpdateId = 1
+ expected.ForwardHubUuid = ""
+ expected.ForwardHubDataUpdateId = 0
if !reflect.DeepEqual(expected, out) {
t.Fatalf("failed to fetch update\nactual: %v\nexpected: %v\n", out, expected)
@@ -326,10 +328,10 @@ func TestAppendAndFetch(t *testing.T) {
// append many
var ins []DataUpdateFull
upd.StartTime = upd.StartTime.Add(time.Duration(upd.Duration) * time.Millisecond)
- ins = append(ins, DataUpdateFull{0, "", -1, sourceData, upd})
+ ins = append(ins, DataUpdateFull{0, "", -1, "", -1, sourceData, upd})
upd.StartTime = upd.StartTime.Add(time.Duration(upd.Duration) * time.Millisecond)
upd.Data.Clients = nil
- ins = append(ins, DataUpdateFull{0, "", -1, sourceData, upd})
+ ins = append(ins, DataUpdateFull{0, "", -1, "", -1, sourceData, upd})
if err = store.AppendMany(ins); err != nil {
t.Fatalf("failed to append update: %v", err)
}
@@ -344,6 +346,8 @@ func TestAppendAndFetch(t *testing.T) {
expected = ins[i]
expected.SourceHubUuid = store.GetStoreId()
expected.SourceHubDataUpdateId = i + 2
+ expected.ForwardHubUuid = ""
+ expected.ForwardHubDataUpdateId = 0
if !reflect.DeepEqual(expected, out) {
t.Fatalf("failed to fetch update\nactual: %v\nexpected: %v\n", out, expected)
@@ -367,7 +371,7 @@ func TestReadOnly(t *testing.T) {
upd := updateData
upd.StartTime = time.Date(2014, time.August, 24, 14, 35, 33, 847000000, time.UTC)
upd.Data.Clients = clientsData
- in := DataUpdateFull{0, "", -1, sourceData, upd}
+ in := DataUpdateFull{0, "", -1, "", -1, sourceData, upd}
if err = store.Append(in); err != nil {
t.Fatalf("unexpected error: %v", err)
}
@@ -406,13 +410,15 @@ func TestGetUpdatesAfter(t *testing.T) {
expected := []DataUpdateFull{}
for i := 0; i < 3; i = i + 1 {
- in := DataUpdateFull{0, "", -1, sourceData, upd}
+ in := DataUpdateFull{0, "", -1, "", -1, sourceData, upd}
if err = store.Append(in); err != nil {
t.Fatalf("unexpected error: %v", err)
}
e := in
e.SourceHubUuid = store.hubUuid
e.SourceHubDataUpdateId = i + 1
+ e.ForwardHubUuid = ""
+ e.ForwardHubDataUpdateId = 0
expected = append(expected, e)
upd.StartTime = upd.StartTime.Add(time.Duration(upd.Duration) * time.Millisecond)
}
@@ -522,9 +528,11 @@ func TestForwardedDataUpdates(t *testing.T) {
expected := []DataUpdateFull{}
for i := 0; i < 3; i = i + 1 {
- in := DataUpdateFull{0, "", -1, sourceData, upd}
+ in := DataUpdateFull{0, "", -1, "", -1, sourceData, upd}
in.SourceHubUuid = forwardedHub
in.SourceHubDataUpdateId = 3 - i // out of order
+ in.ForwardHubUuid = ""
+ in.ForwardHubDataUpdateId = 0
if err = store.Append(in); err != nil {
t.Fatalf("unexpected error: %v", err)
}
diff --git a/src/hub/src/spreadspace.org/sfive/s5typesApi.go b/src/hub/src/spreadspace.org/sfive/s5typesApi.go
index 265380c..12e92c8 100644
--- a/src/hub/src/spreadspace.org/sfive/s5typesApi.go
+++ b/src/hub/src/spreadspace.org/sfive/s5typesApi.go
@@ -66,9 +66,11 @@ type DataUpdate struct {
}
type DataUpdateFull struct {
- Version uint `json:"version"`
- SourceHubUuid string `json:"SourceHubUuid,omitempty"`
- SourceHubDataUpdateId int `json:"SourceHubDataUpdateId,omitempty"`
+ Version uint `json:"version"`
+ SourceHubUuid string `json:"SourceHubUuid,omitempty"`
+ SourceHubDataUpdateId int `json:"SourceHubDataUpdateId,omitempty"`
+ ForwardHubUuid string `json:"ForwardHubUuid,omitempty"`
+ ForwardHubDataUpdateId int `json:"ForwardHubDataUpdateId,omitempty"`
SourceId
DataUpdate
}