dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 844fab776feafa7368027487c7748807b8ce6295
parent eb184095d6957934154f790e43d900e499aa276d
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri,  8 Dec 2023 04:07:20 -0500

cleanup

Diffstat:
Mpkg/web/handlers/poker/poker.go | 28+++++++++++-----------------
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 {