5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
// Copyright © 2016 Steve Francia <spf@spf13.com>.
|
|
//
|
|
// Use of this source code is governed by an MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package jwalterweatherman
|
|
|
|
import (
|
|
"sync/atomic"
|
|
)
|
|
|
|
type logCounter struct {
|
|
counter uint64
|
|
}
|
|
|
|
func (c *logCounter) incr() {
|
|
atomic.AddUint64(&c.counter, 1)
|
|
}
|
|
|
|
func (c *logCounter) resetCounter() {
|
|
atomic.StoreUint64(&c.counter, 0)
|
|
}
|
|
|
|
func (c *logCounter) getCount() uint64 {
|
|
return atomic.LoadUint64(&c.counter)
|
|
}
|
|
|
|
func (c *logCounter) Write(p []byte) (n int, err error) {
|
|
c.incr()
|
|
return len(p), nil
|
|
}
|
|
|
|
// LogCountForLevel returns the number of log invocations for a given threshold.
|
|
func (n *Notepad) LogCountForLevel(l Threshold) uint64 {
|
|
return n.logCounters[l].getCount()
|
|
}
|
|
|
|
// LogCountForLevelsGreaterThanorEqualTo returns the number of log invocations
|
|
// greater than or equal to a given threshold.
|
|
func (n *Notepad) LogCountForLevelsGreaterThanorEqualTo(threshold Threshold) uint64 {
|
|
var cnt uint64
|
|
|
|
for i := int(threshold); i < len(n.logCounters); i++ {
|
|
cnt += n.LogCountForLevel(Threshold(i))
|
|
}
|
|
|
|
return cnt
|
|
}
|
|
|
|
// ResetLogCounters resets the invocation counters for all levels.
|
|
func (n *Notepad) ResetLogCounters() {
|
|
for _, np := range n.logCounters {
|
|
np.resetCounter()
|
|
}
|
|
}
|