in pkg/client/chunk/observed.go [107:138]
func RecvObserved(recv CheckinObservedReceiver) (*proto.CheckinObserved, error) {
var first *proto.CheckinObserved
for {
msg, err := recv.Recv()
if err != nil {
return nil, err
}
if msg.UnitsTimestamp == nil {
// all included in a single message
return msg, nil
}
if first == nil {
// first message in batch
first = msg
} else if first.UnitsTimestamp.AsTime() != msg.UnitsTimestamp.AsTime() {
// only used if the new timestamp is newer
if first.UnitsTimestamp.AsTime().After(msg.UnitsTimestamp.AsTime()) {
// not newer so we ignore the message
continue
}
// different batch; restart
first = msg
}
if len(msg.Units) == 0 {
// ending match message
return first, nil
}
if first != msg {
first.Units = append(first.Units, msg.Units...)
}
}
}