commit 844fab776feafa7368027487c7748807b8ce6295
parent eb184095d6957934154f790e43d900e499aa276d
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 8 Dec 2023 04:07:20 -0500
cleanup
Diffstat:
1 file changed, 11 insertions(+), 17 deletions(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -50,8 +50,9 @@ func (p *Poker) GetOrCreateGame(roomID string) *PokerGame {
g = &PokerGame{
PlayersEventCh: make(chan PlayerEvent),
Players: make([]*PokerStandingPlayer, NbPlayers),
- DealerIdx: -1,
+ DealerIdx: atomic.Int32{},
}
+ g.DealerIdx.Store(-1)
p.games[roomID] = g
}
return g
@@ -125,11 +126,10 @@ type PokerGame struct {
Players []*PokerStandingPlayer
PlayersMtx sync.RWMutex
Ongoing *Ongoing
- DealerIdx int
+ DealerIdx atomic.Int32
smallBlindIdx int
bigBlindIdx int
underTheGunIdx int
- DealerIdxMtx sync.RWMutex
IsGameStarted atomic.Bool
IsGameDone atomic.Bool
IsGameOver atomic.Bool
@@ -246,11 +246,9 @@ func isRoundSettled(players []*PokerPlayer) bool {
}
func (g *PokerGame) incrDealerIdx() {
- g.DealerIdxMtx.RLock()
- dealerIdx := g.DealerIdx
- g.DealerIdxMtx.RUnlock()
+ dealerIdx := g.DealerIdx.Load()
var found bool
- for i := dealerIdx + 1; i < len(g.Ongoing.Players); i++ {
+ for i := dealerIdx + 1; i < int32(len(g.Ongoing.Players)); i++ {
if g.Ongoing.Players[i] != nil {
dealerIdx = i
found = true
@@ -258,7 +256,7 @@ func (g *PokerGame) incrDealerIdx() {
}
}
if !found {
- for i := 0; i < dealerIdx; i++ {
+ for i := int32(0); i < dealerIdx; i++ {
if g.Ongoing.Players[i] != nil {
dealerIdx = i
found = true
@@ -266,14 +264,12 @@ func (g *PokerGame) incrDealerIdx() {
}
}
}
- g.DealerIdxMtx.Lock()
- g.DealerIdx = dealerIdx
- g.DealerIdxMtx.Unlock()
+ g.DealerIdx.Store(dealerIdx)
nbPlayers := len(g.Ongoing.Players)
- g.smallBlindIdx = (dealerIdx + 1) % nbPlayers
- g.bigBlindIdx = (dealerIdx + 2) % nbPlayers
- g.underTheGunIdx = (dealerIdx + 3) % nbPlayers
+ g.smallBlindIdx = (int(dealerIdx) + 1) % nbPlayers
+ g.bigBlindIdx = (int(dealerIdx) + 2) % nbPlayers
+ g.underTheGunIdx = (int(dealerIdx) + 3) % nbPlayers
}
func rotateIdx[T any](players []T) int {
@@ -356,9 +352,7 @@ func waitPlayersActionFn(g *PokerGame, roomID string, skip, minBet int) bool {
return false
}
- g.DealerIdxMtx.RLock()
- dealerIdx := g.DealerIdx
- g.DealerIdxMtx.RUnlock()
+ dealerIdx := int(g.DealerIdx.Load())
playerAlive := 0
for _, p := range g.Ongoing.Players {