summaryrefslogtreecommitdiffstats
path: root/core/payload.go
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-04-19 21:32:53 +0200
committerbt <bt@rctt.net>2026-05-03 17:52:37 +0200
commiteec10d41af62fb9a93cd5fd79dcf94616701cc2a (patch)
treed72068dcc4cb1aa43c2e0a2fae8ff094d41ed9c6 /core/payload.go
parentc00e7dd589921e6be45918d4cd589e52e2b77036 (diff)
downloadsolec-eec10d41af62fb9a93cd5fd79dcf94616701cc2a.tar.gz
solec-eec10d41af62fb9a93cd5fd79dcf94616701cc2a.zip
[common] Basic group channels supportv0.3.0
Diffstat (limited to 'core/payload.go')
-rw-r--r--core/payload.go35
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