diff options
Diffstat (limited to 'core/payload.go')
| -rw-r--r-- | core/payload.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/core/payload.go b/core/payload.go index 3c3afa1..b54a8cd 100644 --- a/core/payload.go +++ b/core/payload.go @@ -185,6 +185,47 @@ func DecodeUsermode(buf io.Reader) (Usermode, error) { return u, nil } +type History struct { + Channel string + Since time.Time + Count int64 + Offset int64 +} + +func (h History) Wrap() (PayloadType, []any) { + return PayloadHistory, []any{ + h.Channel, + h.Since, + h.Count, + h.Offset, + } +} + +func DecodeHistory(buf io.Reader) (History, error) { + var h History + err := decodeString(buf, &h.Channel) + if err != nil { + return h, err + } + + err = decodeTime(buf, &h.Since) + if err != nil { + return h, err + } + + err = decodeNumeric(buf, &h.Count) + if err != nil { + return h, err + } + + err = decodeNumeric(buf, &h.Offset) + if err != nil { + return h, err + } + + return h, nil +} + type Test struct { Num1 uint8 Time1 time.Time |
