summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/logr/levelcache.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/logr/levelcache.go')
-rw-r--r--vendor/github.com/mattermost/logr/levelcache.go98
1 files changed, 0 insertions, 98 deletions
diff --git a/vendor/github.com/mattermost/logr/levelcache.go b/vendor/github.com/mattermost/logr/levelcache.go
deleted file mode 100644
index 2cefb61d..00000000
--- a/vendor/github.com/mattermost/logr/levelcache.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package logr
-
-import (
- "fmt"
- "sync"
-)
-
-// LevelStatus represents whether a level is enabled and
-// requires a stack trace.
-type LevelStatus struct {
- Enabled bool
- Stacktrace bool
- empty bool
-}
-
-type levelCache interface {
- setup()
- get(id LevelID) (LevelStatus, bool)
- put(id LevelID, status LevelStatus) error
- clear()
-}
-
-// syncMapLevelCache uses sync.Map which may better handle large concurrency
-// scenarios.
-type syncMapLevelCache struct {
- m sync.Map
-}
-
-func (c *syncMapLevelCache) setup() {
- c.clear()
-}
-
-func (c *syncMapLevelCache) get(id LevelID) (LevelStatus, bool) {
- if id > MaxLevelID {
- return LevelStatus{}, false
- }
- s, _ := c.m.Load(id)
- status := s.(LevelStatus)
- return status, !status.empty
-}
-
-func (c *syncMapLevelCache) put(id LevelID, status LevelStatus) error {
- if id > MaxLevelID {
- return fmt.Errorf("level id cannot exceed MaxLevelID (%d)", MaxLevelID)
- }
- c.m.Store(id, status)
- return nil
-}
-
-func (c *syncMapLevelCache) clear() {
- var i LevelID
- for i = 0; i < MaxLevelID; i++ {
- c.m.Store(i, LevelStatus{empty: true})
- }
-}
-
-// arrayLevelCache using array and a mutex.
-type arrayLevelCache struct {
- arr [MaxLevelID + 1]LevelStatus
- mux sync.RWMutex
-}
-
-func (c *arrayLevelCache) setup() {
- c.clear()
-}
-
-//var dummy = LevelStatus{}
-
-func (c *arrayLevelCache) get(id LevelID) (LevelStatus, bool) {
- if id > MaxLevelID {
- return LevelStatus{}, false
- }
- c.mux.RLock()
- status := c.arr[id]
- ok := !status.empty
- c.mux.RUnlock()
- return status, ok
-}
-
-func (c *arrayLevelCache) put(id LevelID, status LevelStatus) error {
- if id > MaxLevelID {
- return fmt.Errorf("level id cannot exceed MaxLevelID (%d)", MaxLevelID)
- }
- c.mux.Lock()
- defer c.mux.Unlock()
-
- c.arr[id] = status
- return nil
-}
-
-func (c *arrayLevelCache) clear() {
- c.mux.Lock()
- defer c.mux.Unlock()
-
- for i := range c.arr {
- c.arr[i] = LevelStatus{empty: true}
- }
-}