openreplay/backend/pkg/messages/raw.go
Alexander 17d9a4a116
[Iterator] batch pre-decoding (#852)
* feat(backend): batch pre-decoding implementation
2022-12-05 11:21:26 +01:00

44 lines
703 B
Go

package messages
import (
"log"
)
// RawMessage is a not decoded message
type RawMessage struct {
tp uint64
data []byte
broken *bool
meta *message
}
func (m *RawMessage) Encode() []byte {
return m.data
}
func (m *RawMessage) Decode() Message {
msg, err := ReadMessage(m.tp, NewBytesReader(m.data[1:]))
if err != nil {
log.Printf("decode err: %s", err)
*m.broken = true
return nil
}
msg = transformDeprecated(msg)
msg.Meta().SetMeta(m.meta)
return msg
}
func (m *RawMessage) TypeID() int {
return int(m.tp)
}
func (m *RawMessage) Meta() *message {
return m.meta
}
func (m *RawMessage) SessionID() uint64 {
if m.meta != nil {
return m.meta.SessionID()
}
return 0
}