package session import ( "spark-server/internal/transport/tcp/protocol" ) func (m *memManager) Get(sessionID string) (Session, bool) { m.mu.RLock() defer m.mu.RUnlock() s, ok := m.byID[sessionID] return s, ok } func (m *memManager) kickSameDevice(incoming Session) { userMap := m.byUser[incoming.UserID()] if userMap == nil { return } for _, existing := range userMap { if existing.DeviceID() != incoming.DeviceID() || existing.ID() == incoming.ID() { continue } _ = existing.Send(&Packet{ Command: protocol.CmdKick, Body: protocol.EncodeKick("replaced by new connection"), }) _ = existing.Close() delete(m.byID, existing.ID()) delete(userMap, existing.ID()) } }