mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-16 00:42:05 +00:00
fix(multiplayer): close initial connect sweep rows
This commit is contained in:
@@ -33,14 +33,29 @@ func ReconcileInitialConnect(ctx context.Context, db *sql.DB, now time.Time, lim
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
count := 0
|
type candidate struct {
|
||||||
|
matchID string
|
||||||
|
playlist string
|
||||||
|
readyAt time.Time
|
||||||
|
}
|
||||||
|
var candidates []candidate
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var matchID, playlist string
|
var matchID, playlist string
|
||||||
var readyAt time.Time
|
var readyAt time.Time
|
||||||
if err := rows.Scan(&matchID, &playlist, &readyAt); err != nil {
|
if err := rows.Scan(&matchID, &playlist, &readyAt); err != nil {
|
||||||
return count, err
|
return 0, err
|
||||||
}
|
}
|
||||||
participants, err := loadInitialConnectSnapshot(ctx, db, matchID)
|
candidates = append(candidates, candidate{matchID: matchID, playlist: playlist, readyAt: readyAt})
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
if err := rows.Close(); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
count := 0
|
||||||
|
for _, candidate := range candidates {
|
||||||
|
participants, err := loadInitialConnectSnapshot(ctx, db, candidate.matchID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
@@ -48,14 +63,14 @@ func ReconcileInitialConnect(ctx context.Context, db *sql.DB, now time.Time, lim
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
plan, err := domain.PlanInitialConnect(domain.Playlist(playlist), readyAt, now, participants, history)
|
plan, err := domain.PlanInitialConnect(domain.Playlist(candidate.playlist), candidate.readyAt, now, participants, history)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return count, fmt.Errorf("plan initial connect %s: %w", matchID, err)
|
return count, fmt.Errorf("plan initial connect %s: %w", candidate.matchID, err)
|
||||||
}
|
}
|
||||||
if plan.Action == domain.InitialConnectWait {
|
if plan.Action == domain.InitialConnectWait {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err := ApplyInitialConnectPlan(ctx, db, matchID, "initial-connect:"+matchID, plan, now); err != nil {
|
if err := ApplyInitialConnectPlan(ctx, db, candidate.matchID, "initial-connect:"+candidate.matchID, plan, now); err != nil {
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
count++
|
count++
|
||||||
|
|||||||
Reference in New Issue
Block a user