aboutsummaryrefslogtreecommitdiff
path: root/hotline/presence.go
diff options
context:
space:
mode:
Diffstat (limited to 'hotline/presence.go')
-rw-r--r--hotline/presence.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/hotline/presence.go b/hotline/presence.go
new file mode 100644
index 0000000..7e41357
--- /dev/null
+++ b/hotline/presence.go
@@ -0,0 +1,20 @@
+package hotline
+
+// PresenceTracker receives best-effort notifications about user session lifecycle
+// events so an external system (e.g. Redis) can maintain a list of online users.
+//
+// It is optional: when a Server has no PresenceTracker, online presence is derived
+// from the in-memory ClientManager instead. Implementations must be safe for
+// concurrent use by multiple goroutines.
+type PresenceTracker interface {
+ // UserConnected is called after a successful login, before the nickname is known.
+ UserConnected(login, ip string)
+
+ // UserRenamed is called when a user's nickname is set or changed. oldNickname is
+ // empty the first time a nickname is set (e.g. the 1.2.3 login flow or TranAgreed).
+ UserRenamed(login, oldNickname, newNickname, ip string)
+
+ // UserDisconnected is called when a user's session ends. nickname is empty if the
+ // user disconnected before setting one.
+ UserDisconnected(login, nickname, ip string)
+}