diff options
Diffstat (limited to 'core/payload.go')
| -rw-r--r-- | core/payload.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/core/payload.go b/core/payload.go index e943647..3c3afa1 100644 --- a/core/payload.go +++ b/core/payload.go @@ -150,6 +150,41 @@ func DecodeMessage(buf io.Reader) (Message, error) { return m, nil } +type Usermode struct { + UserAddr string + ChannelName string + Mode UsermodeType +} + +func (u Usermode) Wrap() (PayloadType, []any) { + return PayloadUsermode, []any{ + u.UserAddr, + u.ChannelName, + uint8(u.Mode), + } +} + +func DecodeUsermode(buf io.Reader) (Usermode, error) { + var u Usermode + + err := decodeString(buf, &u.UserAddr) + if err != nil { + return u, err + } + + err = decodeString(buf, &u.ChannelName) + if err != nil { + return u, err + } + + err = decodeNumeric(buf, &u.Mode) + if err != nil { + return u, err + } + + return u, nil +} + type Test struct { Num1 uint8 Time1 time.Time |
