|
|
@ -20,8 +20,13 @@ func (wc *messageWriterChunkStream) write(msg *Message) error { |
|
|
|
|
|
|
|
|
|
|
|
var timestampDelta *uint32 |
|
|
|
var timestampDelta *uint32 |
|
|
|
if wc.lastTimestamp != nil { |
|
|
|
if wc.lastTimestamp != nil { |
|
|
|
v := msg.Timestamp - *wc.lastTimestamp |
|
|
|
diff := int64(msg.Timestamp) - int64(*wc.lastTimestamp) |
|
|
|
timestampDelta = &v |
|
|
|
|
|
|
|
|
|
|
|
// use delta only if it is positive
|
|
|
|
|
|
|
|
if diff >= 0 { |
|
|
|
|
|
|
|
v := uint32(diff) |
|
|
|
|
|
|
|
timestampDelta = &v |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for { |
|
|
|
for { |
|
|
@ -34,7 +39,7 @@ func (wc *messageWriterChunkStream) write(msg *Message) error { |
|
|
|
firstChunk = false |
|
|
|
firstChunk = false |
|
|
|
|
|
|
|
|
|
|
|
switch { |
|
|
|
switch { |
|
|
|
case wc.lastMessageStreamID == nil || *wc.lastMessageStreamID != msg.MessageStreamID: |
|
|
|
case wc.lastMessageStreamID == nil || timestampDelta == nil || *wc.lastMessageStreamID != msg.MessageStreamID: |
|
|
|
err := Chunk0{ |
|
|
|
err := Chunk0{ |
|
|
|
ChunkStreamID: msg.ChunkStreamID, |
|
|
|
ChunkStreamID: msg.ChunkStreamID, |
|
|
|
Timestamp: msg.Timestamp, |
|
|
|
Timestamp: msg.Timestamp, |
|
|
|