session state decoupled.

This commit is contained in:
Miroslav Šedivý 2021-03-14 00:50:08 +01:00
parent 4a28307c1e
commit ecad2124fd
4 changed files with 8 additions and 19 deletions

View File

@ -103,7 +103,7 @@ func (manager *SessionManagerCtx) Delete(id string) error {
manager.sessionsMu.Unlock()
var err error
if session.IsConnected() {
if session.State().IsConnected {
err = session.Disconnect("session deleted")
}
@ -175,7 +175,7 @@ func (manager *SessionManagerCtx) Broadcast(v interface{}, exclude interface{})
defer manager.sessionsMu.Unlock()
for id, session := range manager.sessions {
if !session.IsConnected() {
if !session.State().IsConnected {
continue
}
@ -196,7 +196,7 @@ func (manager *SessionManagerCtx) AdminBroadcast(v interface{}, exclude interfac
defer manager.sessionsMu.Unlock()
for id, session := range manager.sessions {
if !session.IsConnected() || !session.Profile().IsAdmin {
if !session.State().IsConnected || !session.Profile().IsAdmin {
continue
}

View File

@ -45,22 +45,14 @@ func (session *SessionCtx) profileChanged() {
}
}
// ---
// state
// ---
func (session *SessionCtx) State() types.SessionState {
return session.state
}
func (session *SessionCtx) IsHost() bool {
return session.manager.host != nil && session.manager.host == session
}
func (session *SessionCtx) IsConnected() bool {
return session.state.IsConnected
}
func (session *SessionCtx) State() types.SessionState {
return session.state
}
// ---
// webscoket
// ---

View File

@ -20,11 +20,8 @@ type SessionState struct {
type Session interface {
ID() string
Profile() MemberProfile
// state
IsHost() bool
IsConnected() bool
State() SessionState
IsHost() bool
// websocket
SetWebSocketPeer(websocketPeer WebSocketPeer)

View File

@ -180,7 +180,7 @@ func (manager *WebSocketManagerCtx) Upgrade(w http.ResponseWriter, r *http.Reque
return connection.Close()
}
if session.IsConnected() {
if session.State().IsConnected {
// TODO: Refactor, return error code.
if err = connection.WriteJSON(
message.SystemDisconnect{