clean out stale matches
This commit is contained in:
parent
351e5eebc6
commit
f5eac37b06
@ -60,6 +60,13 @@ func MatchCleaner(c *Coordinator) {
|
|||||||
delete(c.Matches, v.ID)
|
delete(c.Matches, v.ID)
|
||||||
v.Watcher <- true
|
v.Watcher <- true
|
||||||
}
|
}
|
||||||
|
if time.Now().After(v.LastMove.Add(time.Minute * 10)) {
|
||||||
|
log.Println("clearing stale match")
|
||||||
|
v.Game = nil
|
||||||
|
v.Active = false
|
||||||
|
delete(c.Matches, v.ID)
|
||||||
|
v.Watcher <- true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
c.MatchLock.Unlock()
|
c.MatchLock.Unlock()
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package coordinator
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.saintnet.tech/stryan/snengame/internal/game"
|
"git.saintnet.tech/stryan/snengame/internal/game"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@ -49,6 +50,7 @@ type Session struct {
|
|||||||
Game *game.Game
|
Game *game.Game
|
||||||
Watcher chan bool
|
Watcher chan bool
|
||||||
Broadcasts map[uuid.UUID]chan SessionResp
|
Broadcasts map[uuid.UUID]chan SessionResp
|
||||||
|
LastMove time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSession() *Session {
|
func NewSession() *Session {
|
||||||
@ -61,6 +63,7 @@ func NewSession() *Session {
|
|||||||
Game: nil,
|
Game: nil,
|
||||||
Watcher: make(chan bool),
|
Watcher: make(chan bool),
|
||||||
Broadcasts: make(map[uuid.UUID]chan SessionResp),
|
Broadcasts: make(map[uuid.UUID]chan SessionResp),
|
||||||
|
LastMove: time.Now(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,6 +105,9 @@ func (s *Session) Play(id uuid.UUID, cmd *game.Command) *game.CommandResult {
|
|||||||
if s.pMap[id] != cmd.PlayerID {
|
if s.pMap[id] != cmd.PlayerID {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
if cmd.Type != SessionCmdPoll {
|
||||||
|
s.LastMove = time.Now()
|
||||||
|
}
|
||||||
res := s.Game.Parse(cmd)
|
res := s.Game.Parse(cmd)
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user