From 03e18cd9dbb254cbe6aabf772f7f49bca9d5bf10 Mon Sep 17 00:00:00 2001 From: Cyrille Nofficial Date: Sun, 2 Feb 2020 23:42:43 +0100 Subject: [PATCH] Add RecordSet field --- go.mod | 4 +- go.sum | 6 +- part/record.go | 61 ++++++++++-- part/record_test.go | 49 +++++++++- .../robocar-protobuf/go/events/events.pb.go | 98 ++++++++++--------- .../github.com/golang/protobuf/proto/lib.go | 2 +- .../github.com/golang/protobuf/proto/text.go | 6 +- vendor/modules.txt | 4 +- 8 files changed, 163 insertions(+), 67 deletions(-) diff --git a/go.mod b/go.mod index a6069a1..8bfdc26 100644 --- a/go.mod +++ b/go.mod @@ -4,9 +4,9 @@ go 1.13 require ( github.com/cyrilix/robocar-base v0.0.0-20200103000136-b08c9be9a69a - github.com/cyrilix/robocar-protobuf/go v0.0.0-20200125171436-7bf31bd564b8 + github.com/cyrilix/robocar-protobuf/go v0.0.0-20200202123632-eda50f0cce3b github.com/eclipse/paho.mqtt.golang v1.2.0 - github.com/golang/protobuf v1.3.2 + github.com/golang/protobuf v1.3.3 github.com/sirupsen/logrus v1.4.2 golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect ) diff --git a/go.sum b/go.sum index a6a1972..f9922e3 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/cyrilix/robocar-base v0.0.0-20200103000136-b08c9be9a69a h1:Gznzd8APE9C+rkN3ePlKajYhgmNaCO7aJQ2WeNvoSt8= github.com/cyrilix/robocar-base v0.0.0-20200103000136-b08c9be9a69a/go.mod h1:jRQ+lJAHKkdcjwS5vt2t5LX2zM+bxX+gKffixkc2lbA= -github.com/cyrilix/robocar-protobuf/go v0.0.0-20200125171436-7bf31bd564b8 h1:8q1eiK2ii5IaztZUvW/rCaZoQMXqFR+EOP+8vUEAIgk= -github.com/cyrilix/robocar-protobuf/go v0.0.0-20200125171436-7bf31bd564b8/go.mod h1:I+i6Ujns+4DmRmmUej56MItlmT4K2zlMZ35vZrHEfQ4= +github.com/cyrilix/robocar-protobuf/go v0.0.0-20200202123632-eda50f0cce3b h1:HUFFtldNiyl5uHq2W2mkO7MecfgTTHi+IzdAZmr92jQ= +github.com/cyrilix/robocar-protobuf/go v0.0.0-20200202123632-eda50f0cce3b/go.mod h1:I+i6Ujns+4DmRmmUej56MItlmT4K2zlMZ35vZrHEfQ4= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190506211059-b20a14b54661/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= @@ -23,6 +23,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= diff --git a/part/record.go b/part/record.go index 6cd5a91..6433898 100644 --- a/part/record.go +++ b/part/record.go @@ -1,29 +1,33 @@ package part import ( + "fmt" "github.com/cyrilix/robocar-base/service" "github.com/cyrilix/robocar-protobuf/go/events" mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/golang/protobuf/proto" log "github.com/sirupsen/logrus" "sync" + "time" ) func NewRecorder(client mqtt.Client, recordTopic, cameraTopic, steeringTopic, switchRecordTopic string) *Recorder { return &Recorder{ - client: client, - recordTopic: recordTopic, - cameraTopic: cameraTopic, - steeringTopic: steeringTopic, + client: client, + recordTopic: recordTopic, + cameraTopic: cameraTopic, + steeringTopic: steeringTopic, switchRecordTopic: switchRecordTopic, - enabled: false, - cancel: make(chan interface{}), + enabled: false, + idGenerator: NewDateBasedGenerator(), + recordSet: "", + cancel: make(chan interface{}), } } type Recorder struct { - client mqtt.Client - recordTopic string + client mqtt.Client + recordTopic string cameraTopic, steeringTopic, switchRecordTopic string muSteeringMsg sync.Mutex @@ -32,6 +36,9 @@ type Recorder struct { muEnabled sync.RWMutex enabled bool + idGenerator IdGenerator + recordSet string + cancel chan interface { } } @@ -63,6 +70,11 @@ func (r *Recorder) onSwitchRecord(_ mqtt.Client, message mqtt.Message) { r.muEnabled.Lock() defer r.muEnabled.Unlock() + + if ! r.enabled && msg.GetEnabled() { + r.recordSet = r.idGenerator.Next() + } + r.enabled = msg.GetEnabled() } @@ -98,8 +110,9 @@ func (r *Recorder) onFrame(_ mqtt.Client, message mqtt.Message) { } record := events.RecordMessage{ - Frame: &msg, - Steering: steering, + Frame: &msg, + Steering: steering, + RecordSet: r.recordSet, } payload, err := proto.Marshal(&record) @@ -143,3 +156,31 @@ var registerCallBacks = func(r *Recorder) { log.Panicf("unable to register callback to %v:%v", r.switchRecordTopic, err) } } + + +type IdGenerator interface { + Next() string +} + +func NewDateBasedGenerator() *DateBasedGenerator { + return &DateBasedGenerator{ + muCpt: sync.Mutex{}, + cpt: 0, + idTemplate: "%s-%d", + start: time.Now().Format("2006011504"), + } +} + +type DateBasedGenerator struct { + muCpt sync.Mutex + cpt int + idTemplate string + start string +} + +func (d *DateBasedGenerator) Next() string { + d.muCpt.Lock() + defer d.muCpt.Unlock() + d.cpt += 1 + return fmt.Sprintf(d.idTemplate, d.start, d.cpt) +} diff --git a/part/record_test.go b/part/record_test.go index 09947ed..15e9770 100644 --- a/part/record_test.go +++ b/part/record_test.go @@ -5,13 +5,16 @@ import ( "github.com/cyrilix/robocar-protobuf/go/events" mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/golang/protobuf/proto" + log "github.com/sirupsen/logrus" "io/ioutil" + "regexp" + "strings" "sync" "testing" "time" ) -func TestRecorder_RecordOff(t *testing.T) { +func TestRecorder_Record(t *testing.T) { oldRegister := registerCallBacks oldPublish := publish defer func() { @@ -44,6 +47,13 @@ func TestRecorder_RecordOff(t *testing.T) { } recorder := NewRecorder(nil, recordTopic, cameraTopic, steeringTopic, switchRecord) + recorder.idGenerator = &DateBasedGenerator{ + muCpt: sync.Mutex{}, + cpt: 0, + idTemplate: "%s-%d", + start: "record", + } + go func() { if err := recorder.Start(); err == nil { @@ -67,9 +77,12 @@ func TestRecorder_RecordOff(t *testing.T) { {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: nil, steeringMsg: nil, expectedRecordMsg: nil, wait: 5 * time.Millisecond}, {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: frame1, steeringMsg: nil, expectedRecordMsg: nil, wait: 5 * time.Millisecond}, {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: nil, steeringMsg: &steeringRight, expectedRecordMsg: nil, wait: 5 * time.Millisecond}, - {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: frame1, steeringMsg: &steeringRight, expectedRecordMsg: &events.RecordMessage{Frame: frame1, Steering: &steeringRight}, wait: 5 * time.Millisecond}, + {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: frame1, steeringMsg: &steeringRight, expectedRecordMsg: &events.RecordMessage{RecordSet: "record-1", Frame: frame1, Steering: &steeringRight}, wait: 5 * time.Millisecond}, {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: nil, steeringMsg: &steeringLeft, expectedRecordMsg: nil, wait: 5 * time.Millisecond}, - {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: frame2, steeringMsg: &steeringLeft, expectedRecordMsg: &events.RecordMessage{Frame: frame2, Steering: &steeringLeft}, wait: 5 * time.Millisecond}, + {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: frame2, steeringMsg: &steeringLeft, expectedRecordMsg: &events.RecordMessage{RecordSet: "record-1", Frame: frame2, Steering: &steeringLeft}, wait: 5 * time.Millisecond}, + {recordMsg: &events.SwitchRecordMessage{Enabled: false}, frameMsg: nil, steeringMsg: nil, expectedRecordMsg: nil, wait: 5 * time.Millisecond}, + {recordMsg: &events.SwitchRecordMessage{Enabled: false}, frameMsg: nil, steeringMsg: nil, expectedRecordMsg: nil, wait: 5 * time.Millisecond}, + {recordMsg: &events.SwitchRecordMessage{Enabled: true}, frameMsg: frame1, steeringMsg: &steeringRight, expectedRecordMsg: &events.RecordMessage{RecordSet: "record-2", Frame: frame1, Steering: &steeringLeft}, wait: 5 * time.Millisecond}, } for _, c := range cases { @@ -113,3 +126,33 @@ func loadImage(t *testing.T, imgPath string, id string) *events.FrameMessage { } return msg } + +func TestDateBasedGenerator_Next(t *testing.T) { + log.SetLevel(log.InfoLevel) + + expectedFmt := "[0-9]{4}[01][0-9][0-2][0-9][0-5][0-9]-[0-9]+" + r, err := regexp.Compile(expectedFmt) + if err != nil { + t.Fatalf("unable to compile expected regex: %v", err) + } + d := NewDateBasedGenerator() + id1 := d.Next() + log.Debugf("first id: %v", id1) + if !r.MatchString(id1) { + t.Errorf("Unexpected id format: %v, wants: %s", id1, expectedFmt) + } + + id2 := d.Next() + log.Debugf("2nd id: %v", id2) + + if strings.Split(id1, "-")[0] != strings.Split(id2, "-")[0] { + t.Errorf("ids are differentt prefixes: %v - %v", strings.Split(id1, "-")[0], strings.Split(id2, "-")[0]) + } + + if strings.Split(id1, "-")[1] != "1" { + t.Errorf("unexpected suffix: %v, wants %v", strings.Split(id1, "-")[1], "1") + } + if strings.Split(id2, "-")[1] != "2" { + t.Errorf("unexpected suffix: %v, wants %v", strings.Split(id2, "-")[1], "2") + } +} diff --git a/vendor/github.com/cyrilix/robocar-protobuf/go/events/events.pb.go b/vendor/github.com/cyrilix/robocar-protobuf/go/events/events.pb.go index f4e9bda..2982f53 100644 --- a/vendor/github.com/cyrilix/robocar-protobuf/go/events/events.pb.go +++ b/vendor/github.com/cyrilix/robocar-protobuf/go/events/events.pb.go @@ -675,6 +675,7 @@ func (m *Ellipse) GetConfidence() float32 { type RecordMessage struct { Frame *FrameMessage `protobuf:"bytes,1,opt,name=frame,proto3" json:"frame,omitempty"` Steering *SteeringMessage `protobuf:"bytes,2,opt,name=steering,proto3" json:"steering,omitempty"` + RecordSet string `protobuf:"bytes,3,opt,name=recordSet,proto3" json:"recordSet,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -719,6 +720,13 @@ func (m *RecordMessage) GetSteering() *SteeringMessage { return nil } +func (m *RecordMessage) GetRecordSet() string { + if m != nil { + return m.RecordSet + } + return "" +} + func init() { proto.RegisterEnum("robocar.events.DriveMode", DriveMode_name, DriveMode_value) proto.RegisterEnum("robocar.events.TypeObject", TypeObject_name, TypeObject_value) @@ -739,49 +747,49 @@ func init() { func init() { proto.RegisterFile("events/events.proto", fileDescriptor_8ec31f2d2a3db598) } var fileDescriptor_8ec31f2d2a3db598 = []byte{ - // 689 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0x4b, 0x6f, 0xd3, 0x5a, - 0x10, 0xee, 0x71, 0xe2, 0x3c, 0x26, 0xbd, 0xb9, 0xd1, 0xe9, 0xbd, 0xbd, 0xbe, 0x11, 0xa2, 0x95, - 0xd9, 0x44, 0x95, 0xea, 0x40, 0x10, 0x12, 0x88, 0x55, 0x4a, 0x8b, 0x54, 0xa9, 0x8f, 0xe8, 0x34, - 0x45, 0x82, 0x4d, 0xe5, 0xd8, 0xe3, 0xc4, 0xc8, 0xf1, 0x89, 0xec, 0xd3, 0x47, 0x76, 0x2c, 0xf8, - 0x19, 0xfc, 0x00, 0x16, 0xfc, 0x48, 0xe4, 0xf3, 0x48, 0x5b, 0x43, 0x25, 0x84, 0xc4, 0x2a, 0xf3, - 0x4d, 0x66, 0xbe, 0xf9, 0x66, 0xe6, 0x78, 0x60, 0x03, 0xaf, 0x30, 0x15, 0x79, 0x5f, 0xfd, 0x78, - 0x8b, 0x8c, 0x0b, 0x4e, 0xdb, 0x19, 0x9f, 0xf0, 0xc0, 0xcf, 0x3c, 0xe5, 0xed, 0x6e, 0x4d, 0x39, - 0x9f, 0x26, 0xd8, 0x97, 0xff, 0x4e, 0x2e, 0xa3, 0xbe, 0x88, 0xe7, 0x98, 0x0b, 0x7f, 0xbe, 0x50, - 0x09, 0x6e, 0x0c, 0x8d, 0xb7, 0x99, 0x3f, 0x47, 0x86, 0x11, 0xa5, 0x50, 0x4d, 0xfd, 0x39, 0x3a, - 0x64, 0x9b, 0xf4, 0x9a, 0x4c, 0xda, 0xb4, 0x0d, 0x56, 0x1c, 0x3a, 0x96, 0xf4, 0x58, 0x71, 0x48, - 0x5f, 0x01, 0x04, 0x19, 0xfa, 0x02, 0xc3, 0x0b, 0x5f, 0x38, 0x95, 0x6d, 0xd2, 0x6b, 0x0d, 0xba, - 0x9e, 0xaa, 0xe2, 0x99, 0x2a, 0xde, 0xd8, 0x54, 0x61, 0x4d, 0x1d, 0x3d, 0x14, 0xee, 0x09, 0xac, - 0xcb, 0x52, 0xc7, 0x98, 0xe7, 0xfe, 0x14, 0x69, 0x4f, 0x52, 0x13, 0x49, 0xe1, 0x78, 0xf7, 0x85, - 0x7b, 0x46, 0x94, 0x2c, 0xfa, 0x0f, 0xd8, 0x51, 0x81, 0xa5, 0x8e, 0x75, 0xa6, 0x80, 0xfb, 0x99, - 0xc0, 0xdf, 0x67, 0x02, 0x31, 0x8b, 0xd3, 0xa9, 0xe1, 0xec, 0x42, 0x23, 0xd7, 0x2e, 0xc9, 0x6c, - 0xb1, 0x15, 0xa6, 0x8f, 0x01, 0x02, 0x9e, 0x46, 0x71, 0x88, 0x69, 0xa0, 0xa8, 0x2c, 0x76, 0xc7, - 0x43, 0x5f, 0x40, 0x53, 0x12, 0x5f, 0x64, 0x18, 0xe9, 0xce, 0x1e, 0x96, 0xd5, 0x88, 0xb4, 0x25, - 0x65, 0x8c, 0x67, 0x19, 0x17, 0x22, 0xc1, 0x3b, 0x32, 0x84, 0x76, 0x19, 0x19, 0x06, 0xff, 0x29, - 0x19, 0x47, 0xd0, 0xd9, 0xcf, 0xe2, 0x2b, 0x3c, 0xe6, 0xe1, 0x4a, 0xc6, 0x4b, 0x80, 0xb0, 0xf0, - 0x5d, 0xcc, 0x79, 0xa8, 0x84, 0xb4, 0x07, 0xff, 0x97, 0xb9, 0x56, 0x59, 0xac, 0x19, 0x1a, 0xd3, - 0x5d, 0x42, 0xfb, 0x74, 0xf2, 0x11, 0x03, 0x91, 0x1b, 0xae, 0xa7, 0x50, 0xe7, 0xca, 0xe3, 0x90, - 0xed, 0x4a, 0xaf, 0x35, 0xd8, 0x2c, 0x13, 0xa9, 0x04, 0x66, 0xc2, 0xee, 0x37, 0x62, 0xfd, 0x72, - 0x23, 0xdf, 0x08, 0xd4, 0x14, 0x15, 0xf5, 0xa0, 0x2a, 0x96, 0x0b, 0xa3, 0xbc, 0x5b, 0x4e, 0x1e, - 0x2f, 0x17, 0xa8, 0x8b, 0xca, 0xb8, 0xe2, 0x01, 0x27, 0x18, 0x09, 0x59, 0xcc, 0x66, 0xd2, 0xa6, - 0x1d, 0xa8, 0x08, 0xbe, 0x90, 0x83, 0xb4, 0x59, 0x61, 0x16, 0xaf, 0x29, 0x8b, 0xa7, 0x33, 0xe1, - 0x54, 0xa5, 0x4f, 0x01, 0xba, 0x09, 0xb5, 0x09, 0x17, 0x82, 0xcf, 0x1d, 0x5b, 0xba, 0x35, 0x2a, - 0xad, 0xab, 0x56, 0x5e, 0x97, 0xdb, 0x87, 0x8d, 0xb3, 0xeb, 0x58, 0x04, 0x33, 0x86, 0x01, 0xcf, - 0x42, 0x33, 0x2e, 0x07, 0xea, 0x98, 0xfa, 0x93, 0x04, 0xd5, 0x0b, 0x6f, 0x30, 0x03, 0xdd, 0xaf, - 0x04, 0x5a, 0x8c, 0xfb, 0xab, 0xc8, 0x3e, 0xd4, 0x03, 0x9e, 0x0a, 0x7e, 0x99, 0xe9, 0xc1, 0xfe, - 0x5b, 0xee, 0x73, 0xc4, 0xe3, 0x54, 0x30, 0x13, 0x45, 0x9f, 0x41, 0x1d, 0x93, 0x24, 0x5e, 0xe4, - 0xa8, 0xa7, 0xfa, 0x5f, 0x39, 0xe1, 0x40, 0xfd, 0xcd, 0x4c, 0xdc, 0xef, 0xbe, 0xa9, 0x27, 0x60, - 0xcb, 0xda, 0x74, 0x1d, 0xc8, 0x8d, 0xec, 0xc3, 0x66, 0xe4, 0xa6, 0x40, 0x4b, 0x3d, 0x63, 0xb2, - 0x74, 0xbf, 0x10, 0xa8, 0xeb, 0x82, 0x74, 0x17, 0x6a, 0x01, 0xa6, 0x02, 0x33, 0xfd, 0x59, 0x3f, - 0xd0, 0x8a, 0x0e, 0x2a, 0x36, 0x71, 0x1d, 0x87, 0x62, 0xa6, 0xc9, 0x14, 0x28, 0x36, 0x31, 0x43, - 0xb9, 0x20, 0xb5, 0x34, 0x8d, 0x8a, 0x68, 0x3f, 0x9d, 0x26, 0x28, 0xf7, 0x66, 0x31, 0x05, 0x4a, - 0xfb, 0xb1, 0x7f, 0xd8, 0xcf, 0x27, 0x02, 0x7f, 0xdd, 0x5f, 0xcd, 0xc0, 0x5c, 0x13, 0xa5, 0xf1, - 0xd1, 0x4f, 0x07, 0xa1, 0x83, 0xf5, 0xad, 0xa1, 0xaf, 0xef, 0xdc, 0x15, 0x35, 0xf4, 0xad, 0x72, - 0x5a, 0xe9, 0x14, 0xdd, 0x1e, 0x9e, 0x9d, 0x5d, 0x68, 0xae, 0x3e, 0x32, 0xda, 0x82, 0xfa, 0xe1, - 0xc9, 0xbb, 0xe1, 0xd1, 0xe1, 0x7e, 0x67, 0x8d, 0x36, 0xa0, 0x7a, 0x7e, 0x76, 0xc0, 0x3a, 0x84, - 0x36, 0xc1, 0x1e, 0x1d, 0x1e, 0x9d, 0x8e, 0x3b, 0xd6, 0xce, 0x00, 0xe0, 0xf6, 0x65, 0xd3, 0x3a, - 0x54, 0x86, 0x27, 0xef, 0x3b, 0x6b, 0x85, 0xf1, 0x66, 0x58, 0x84, 0x36, 0xa0, 0xba, 0x77, 0x7e, - 0x3c, 0xea, 0x58, 0x85, 0x35, 0x2a, 0x72, 0x2a, 0x7b, 0x8d, 0x0f, 0x35, 0x25, 0x63, 0x52, 0x93, - 0x47, 0xf8, 0xf9, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x97, 0x5e, 0xa7, 0x9f, 0x1f, 0x06, 0x00, - 0x00, + // 696 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0x5b, 0x6f, 0x12, 0x51, + 0x10, 0xee, 0x2e, 0x2c, 0xb0, 0x43, 0x45, 0x72, 0xaa, 0x75, 0x25, 0x8d, 0x6d, 0xf0, 0x85, 0x34, + 0xe9, 0xa2, 0x18, 0x13, 0x8d, 0x4f, 0xd4, 0xd6, 0xa4, 0x49, 0x2f, 0xe4, 0x40, 0x4d, 0xf4, 0xa5, + 0x59, 0x76, 0x07, 0x58, 0x03, 0x7b, 0xc8, 0xd9, 0xd3, 0x0b, 0xef, 0xfe, 0x0c, 0xe3, 0xb3, 0x0f, + 0xfe, 0x48, 0xb3, 0xe7, 0x42, 0xe9, 0x6a, 0x13, 0x63, 0xe2, 0x13, 0xf3, 0x0d, 0x33, 0xdf, 0x7c, + 0x33, 0x73, 0x76, 0x60, 0x03, 0xaf, 0x30, 0x11, 0x69, 0x5b, 0xfd, 0xf8, 0x73, 0xce, 0x04, 0x23, + 0x35, 0xce, 0x86, 0x2c, 0x0c, 0xb8, 0xaf, 0xbc, 0x8d, 0xed, 0x31, 0x63, 0xe3, 0x29, 0xb6, 0xe5, + 0xbf, 0xc3, 0xcb, 0x51, 0x5b, 0xc4, 0x33, 0x4c, 0x45, 0x30, 0x9b, 0xab, 0x84, 0x66, 0x0c, 0x95, + 0x0f, 0x3c, 0x98, 0x21, 0xc5, 0x11, 0x21, 0x50, 0x4c, 0x82, 0x19, 0x7a, 0xd6, 0x8e, 0xd5, 0x72, + 0xa9, 0xb4, 0x49, 0x0d, 0xec, 0x38, 0xf2, 0x6c, 0xe9, 0xb1, 0xe3, 0x88, 0xbc, 0x05, 0x08, 0x39, + 0x06, 0x02, 0xa3, 0x8b, 0x40, 0x78, 0x85, 0x1d, 0xab, 0x55, 0xed, 0x34, 0x7c, 0x55, 0xc5, 0x37, + 0x55, 0xfc, 0x81, 0xa9, 0x42, 0x5d, 0x1d, 0xdd, 0x15, 0xcd, 0x53, 0x58, 0x97, 0xa5, 0x4e, 0x30, + 0x4d, 0x83, 0x31, 0x92, 0x96, 0xa4, 0xb6, 0x24, 0x85, 0xe7, 0xdf, 0x15, 0xee, 0x1b, 0x51, 0xb2, + 0xe8, 0x23, 0x70, 0x46, 0x19, 0x96, 0x3a, 0xd6, 0xa9, 0x02, 0xcd, 0xaf, 0x16, 0x3c, 0xec, 0x0b, + 0x44, 0x1e, 0x27, 0x63, 0xc3, 0xd9, 0x80, 0x4a, 0xaa, 0x5d, 0x92, 0xd9, 0xa6, 0x4b, 0x4c, 0x9e, + 0x01, 0x84, 0x2c, 0x19, 0xc5, 0x11, 0x26, 0xa1, 0xa2, 0xb2, 0xe9, 0x8a, 0x87, 0xbc, 0x06, 0x57, + 0x12, 0x5f, 0x70, 0x1c, 0xe9, 0xce, 0xee, 0x97, 0x55, 0x19, 0x69, 0x4b, 0xca, 0x18, 0x4c, 0x38, + 0x13, 0x62, 0x8a, 0x2b, 0x32, 0x84, 0x76, 0x19, 0x19, 0x06, 0xff, 0x2f, 0x19, 0xc7, 0x50, 0x3f, + 0xe0, 0xf1, 0x15, 0x9e, 0xb0, 0x68, 0x29, 0xe3, 0x0d, 0x40, 0x94, 0xf9, 0x2e, 0x66, 0x2c, 0x52, + 0x42, 0x6a, 0x9d, 0xa7, 0x79, 0xae, 0x65, 0x16, 0x75, 0x23, 0x63, 0x36, 0x17, 0x50, 0x3b, 0x1b, + 0x7e, 0xc1, 0x50, 0xa4, 0x86, 0xeb, 0x05, 0x94, 0x99, 0xf2, 0x78, 0xd6, 0x4e, 0xa1, 0x55, 0xed, + 0x6c, 0xe6, 0x89, 0x54, 0x02, 0x35, 0x61, 0x77, 0x1b, 0xb1, 0xff, 0xba, 0x91, 0x9f, 0x16, 0x94, + 0x14, 0x15, 0xf1, 0xa1, 0x28, 0x16, 0x73, 0xa3, 0xbc, 0x91, 0x4f, 0x1e, 0x2c, 0xe6, 0xa8, 0x8b, + 0xca, 0xb8, 0xec, 0x01, 0x4f, 0x71, 0x24, 0x64, 0x31, 0x87, 0x4a, 0x9b, 0xd4, 0xa1, 0x20, 0xd8, + 0x5c, 0x0e, 0xd2, 0xa1, 0x99, 0x99, 0xbd, 0x26, 0x1e, 0x8f, 0x27, 0xc2, 0x2b, 0x4a, 0x9f, 0x02, + 0x64, 0x13, 0x4a, 0x43, 0x26, 0x04, 0x9b, 0x79, 0x8e, 0x74, 0x6b, 0x94, 0x5b, 0x57, 0x29, 0xbf, + 0xae, 0x66, 0x1b, 0x36, 0xfa, 0xd7, 0xb1, 0x08, 0x27, 0x14, 0x43, 0xc6, 0x23, 0x33, 0x2e, 0x0f, + 0xca, 0x98, 0x04, 0xc3, 0x29, 0xaa, 0x17, 0x5e, 0xa1, 0x06, 0x36, 0x7f, 0x58, 0x50, 0xa5, 0x2c, + 0x58, 0x46, 0xb6, 0xa1, 0x1c, 0xb2, 0x44, 0xb0, 0x4b, 0xae, 0x07, 0xfb, 0x38, 0xdf, 0x67, 0x8f, + 0xc5, 0x89, 0xa0, 0x26, 0x8a, 0xbc, 0x84, 0x32, 0x4e, 0xa7, 0xf1, 0x3c, 0x45, 0x3d, 0xd5, 0x27, + 0xf9, 0x84, 0x43, 0xf5, 0x37, 0x35, 0x71, 0xff, 0xfa, 0xa6, 0x9e, 0x83, 0x23, 0x6b, 0x93, 0x75, + 0xb0, 0x6e, 0x64, 0x1f, 0x0e, 0xb5, 0x6e, 0x32, 0xb4, 0xd0, 0x33, 0xb6, 0x16, 0xcd, 0x6f, 0x16, + 0x94, 0x75, 0x41, 0xb2, 0x07, 0xa5, 0x10, 0x13, 0x81, 0x5c, 0x7f, 0xd6, 0xf7, 0xb4, 0xa2, 0x83, + 0xb2, 0x4d, 0x5c, 0xc7, 0x91, 0x98, 0x68, 0x32, 0x05, 0xb2, 0x4d, 0x4c, 0x50, 0x2e, 0x48, 0x2d, + 0x4d, 0xa3, 0x2c, 0x3a, 0x48, 0xc6, 0x53, 0x94, 0x7b, 0xb3, 0xa9, 0x02, 0xb9, 0xfd, 0x38, 0xbf, + 0xed, 0xe7, 0xbb, 0x05, 0x0f, 0xee, 0xae, 0xa6, 0x63, 0xae, 0x89, 0xd2, 0xb8, 0xf5, 0xc7, 0x41, + 0xe8, 0x60, 0x7d, 0x6b, 0xc8, 0xbb, 0x95, 0xbb, 0xa2, 0x86, 0xbe, 0x9d, 0x4f, 0xcb, 0x9d, 0xa2, + 0x95, 0xc3, 0xb3, 0x05, 0x2e, 0x97, 0x0a, 0xfa, 0xa8, 0x7a, 0x72, 0xe9, 0xad, 0x63, 0x77, 0x0f, + 0xdc, 0xe5, 0x27, 0x48, 0xaa, 0x50, 0x3e, 0x3a, 0xfd, 0xd8, 0x3d, 0x3e, 0x3a, 0xa8, 0xaf, 0x91, + 0x0a, 0x14, 0xcf, 0xfb, 0x87, 0xb4, 0x6e, 0x11, 0x17, 0x9c, 0xde, 0xd1, 0xf1, 0xd9, 0xa0, 0x6e, + 0xef, 0x76, 0x00, 0x6e, 0xdf, 0x3d, 0x29, 0x43, 0xa1, 0x7b, 0xfa, 0xa9, 0xbe, 0x96, 0x19, 0xef, + 0xbb, 0x59, 0x68, 0x05, 0x8a, 0xfb, 0xe7, 0x27, 0xbd, 0xba, 0x9d, 0x59, 0xbd, 0x2c, 0xa7, 0xb0, + 0x5f, 0xf9, 0x5c, 0x52, 0x22, 0x87, 0x25, 0x79, 0xa2, 0x5f, 0xfd, 0x0a, 0x00, 0x00, 0xff, 0xff, + 0x5d, 0x6e, 0x23, 0x4e, 0x3d, 0x06, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index fdd328b..70fbda5 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -393,7 +393,7 @@ func (p *Buffer) Bytes() []byte { return p.buf } // than relying on this API. // // If deterministic serialization is requested, map entries will be sorted -// by keys in lexographical order. This is an implementation detail and +// by keys in lexicographical order. This is an implementation detail and // subject to change. func (p *Buffer) SetDeterministic(deterministic bool) { p.deterministic = deterministic diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go index 1aaee72..d97f9b3 100644 --- a/vendor/github.com/golang/protobuf/proto/text.go +++ b/vendor/github.com/golang/protobuf/proto/text.go @@ -456,6 +456,8 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return nil } +var textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() + // writeAny writes an arbitrary field. func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error { v = reflect.Indirect(v) @@ -519,8 +521,8 @@ func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Propert // mutating this value. v = v.Addr() } - if etm, ok := v.Interface().(encoding.TextMarshaler); ok { - text, err := etm.MarshalText() + if v.Type().Implements(textMarshalerType) { + text, err := v.Interface().(encoding.TextMarshaler).MarshalText() if err != nil { return err } diff --git a/vendor/modules.txt b/vendor/modules.txt index ba7bc72..101e398 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -2,12 +2,12 @@ github.com/cyrilix/robocar-base/cli github.com/cyrilix/robocar-base/service github.com/cyrilix/robocar-base/testtools -# github.com/cyrilix/robocar-protobuf/go v0.0.0-20200125171436-7bf31bd564b8 +# github.com/cyrilix/robocar-protobuf/go v0.0.0-20200202123632-eda50f0cce3b github.com/cyrilix/robocar-protobuf/go/events # github.com/eclipse/paho.mqtt.golang v1.2.0 github.com/eclipse/paho.mqtt.golang github.com/eclipse/paho.mqtt.golang/packets -# github.com/golang/protobuf v1.3.2 +# github.com/golang/protobuf v1.3.3 github.com/golang/protobuf/proto github.com/golang/protobuf/ptypes/timestamp # github.com/konsorten/go-windows-terminal-sequences v1.0.1