Skip to content

Commit 01d5e36

Browse files
committed
use atomic bool
1 parent 052845a commit 01d5e36

2 files changed

Lines changed: 11 additions & 11 deletions

File tree

internal/gameServer/server.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ type GameServer struct {
4646
Port int
4747
hasSettings bool
4848
VerifyIP bool
49-
Running bool
49+
Running atomic.Bool
5050
Features map[string]string
5151
NeedsUpdatePlayers atomic.Bool
5252
NumberOfPlayers int
@@ -123,7 +123,7 @@ func (g *GameServer) averageCountLag(playerNumber int) (float32, error) {
123123

124124
func (g *GameServer) ManageBuffer() {
125125
for {
126-
if !g.Running {
126+
if !g.Running.Load() {
127127
g.Logger.Info("done managing buffers")
128128
return
129129
}
@@ -200,7 +200,7 @@ func (g *GameServer) ManagePlayers() {
200200
if !playersActive {
201201
g.Logger.Info("no more players, closing room", "numPlayers", g.NumberOfPlayers, "clientSHA", g.ClientSha, "playTime", time.Since(g.StartTime).String())
202202
g.CloseServers()
203-
g.Running = false
203+
g.Running.Store(false)
204204
return
205205
}
206206
time.Sleep(time.Second * DisconnectTimeoutS)

internal/lobbyServer/lobby.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func (s *LobbyServer) watchGameServer(name string, g *gameserver.GameServer) {
227227
go g.ManageBuffer()
228228
go g.ManagePlayers()
229229
for {
230-
if !g.Running {
230+
if !g.Running.Load() {
231231
g.Logger.Info("game server deleted", "port", g.Port)
232232
delete(s.gameServers, name)
233233
return
@@ -304,7 +304,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
304304
if w.(gameserver.Client).Socket == ws {
305305
v.Logger.Info("Player has left lobby", "reason", err.Error(), "player", k, "address", ws.RemoteAddr())
306306

307-
if !v.Running {
307+
if !v.Running.Load() {
308308
v.Players.Delete(k)
309309
} else {
310310
if client, ok := w.(gameserver.Client); ok {
@@ -318,7 +318,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
318318
return true
319319
}
320320
})
321-
if !v.Running {
321+
if !v.Running.Load() {
322322
if v.GetPlayersLength() == 0 {
323323
v.Logger.Info("No more players in lobby, deleting")
324324
v.CloseServers()
@@ -428,7 +428,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
428428
if err := s.sendData(ws, sendMessage); err != nil {
429429
s.Logger.Error(err, "failed to send message", "message", sendMessage, "address", ws.RemoteAddr())
430430
}
431-
} else if g.Running {
431+
} else if g.Running.Load() {
432432
sendMessage.Accept = BadGameState
433433
sendMessage.Message = "Game is already running"
434434
if err := s.sendData(ws, sendMessage); err != nil {
@@ -466,7 +466,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
466466
authenticated = true
467467
var rooms []RoomData
468468
for i, v := range s.gameServers {
469-
if v.Running {
469+
if v.Running.Load() {
470470
continue
471471
}
472472
if receivedMessage.Emulator != v.Emulator {
@@ -527,7 +527,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
527527
} else if g.GetPlayersLength() >= 4 {
528528
accepted = RoomFull
529529
message = "Room is full"
530-
} else if g.Running {
530+
} else if g.Running.Load() {
531531
accepted = BadGameState
532532
message = "Game already running"
533533
} else if receivedMessage.PlayerName == "" {
@@ -631,7 +631,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
631631
if err := s.sendData(ws, sendMessage); err != nil {
632632
s.Logger.Error(err, "failed to send message", "message", sendMessage, "address", ws.RemoteAddr())
633633
}
634-
} else if g.Running {
634+
} else if g.Running.Load() {
635635
sendMessage.Accept = BadGameState
636636
sendMessage.Message = "Game is already running"
637637
if err := s.sendData(ws, sendMessage); err != nil {
@@ -655,7 +655,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
655655
}
656656
}
657657

658-
g.Running = true
658+
g.Running.Store(true)
659659
g.StartTime = time.Now()
660660
g.Logger.Info("starting game", "buffer_target", g.BufferTarget)
661661
g.NumberOfPlayers = g.GetPlayersLength()

0 commit comments

Comments
 (0)