diff options
author | Unknwon <u@gogs.io> | 2019-10-24 01:51:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-24 01:51:46 -0700 |
commit | 01c8df01ec0608f1f25b2f1444adabb98fa5ee8a (patch) | |
tree | f8a7e5dd8d2a8c51e1ce2cabb9d33571a93314dd /internal/sync/status_pool.go | |
parent | 613139e7bef81d3573e7988a47eb6765f3de347a (diff) |
internal: move packages under this directory (#5836)
* Rename pkg -> internal
* Rename routes -> route
* Move route -> internal/route
* Rename models -> db
* Move db -> internal/db
* Fix route2 -> route
* Move cmd -> internal/cmd
* Bump version
Diffstat (limited to 'internal/sync/status_pool.go')
-rw-r--r-- | internal/sync/status_pool.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/internal/sync/status_pool.go b/internal/sync/status_pool.go new file mode 100644 index 00000000..2d729715 --- /dev/null +++ b/internal/sync/status_pool.go @@ -0,0 +1,49 @@ +// Copyright 2016 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +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] +} |