summaryrefslogtreecommitdiff
path: root/internal/server/api/helpers.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server/api/helpers.go')
-rw-r--r--internal/server/api/helpers.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/internal/server/api/helpers.go b/internal/server/api/helpers.go
index 03f45f1..22dd0dd 100644
--- a/internal/server/api/helpers.go
+++ b/internal/server/api/helpers.go
@@ -108,3 +108,25 @@ func SplitMembersAndUsers(membersAndUsers []data.GetNetworkMembersRow) ([]data.M
return members, users
}
+
+func UserPropagate(
+ ctx context.Context, sess *session.Session,
+ user snowflake.ID, payload packet.Payload,
+) packet.Payload {
+ session := sess.Manager().Session(user)
+ if session == nil {
+ log.Println(sess.Addr(), "propagation to", session.Addr(), "failed due to session being nil")
+ return payload
+ }
+ timeout := 1 * time.Second
+ context, cancel := context.WithTimeout(context.Background(), timeout)
+ go func() {
+ defer cancel()
+ pkt := packet.NewPacket(packet.NewMsgPackEncoder(payload))
+ if ok := session.Write(context, pkt); !ok {
+ log.Println(sess.Addr(), "propagation to", session.Addr(), "failed")
+ }
+ }()
+
+ return payload
+}