Files
Gogs/internal/sync/status_table.go
ᴊᴏᴇ ᴄʜᴇɴ 59e9fa191b chore: remove all MIT license file headers (#8083)
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
2026-01-08 19:32:15 -05:00

46 lines
900 B
Go

package sync
import (
"sync"
)
// StatusTable is a table maintains true/false values.
//
// This table is particularly useful for un/marking and checking values
// in different goroutines.
type StatusTable struct {
sync.RWMutex
pool map[string]bool
}
// NewStatusTable initializes and returns a new StatusTable object.
func NewStatusTable() *StatusTable {
return &StatusTable{
pool: make(map[string]bool),
}
}
// Start sets value of given name to true in the pool.
func (p *StatusTable) Start(name string) {
p.Lock()
defer p.Unlock()
p.pool[name] = true
}
// Stop sets value of given name to false in the pool.
func (p *StatusTable) Stop(name string) {
p.Lock()
defer p.Unlock()
p.pool[name] = false
}
// IsRunning checks if value of given name is set to true in the pool.
func (p *StatusTable) IsRunning(name string) bool {
p.RLock()
defer p.RUnlock()
return p.pool[name]
}