mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-28 16:48:30 -05:00
120 lines
2.4 KiB
Go
120 lines
2.4 KiB
Go
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Copyright 2021 The LibreGraph Authors.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package ldapserver
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
type Stats struct {
|
|
Conns uint64
|
|
ConnsCurrent uint64
|
|
ConnsMax uint64
|
|
Adds uint64
|
|
Binds uint64
|
|
Deletes uint64
|
|
ModifyDNs uint64
|
|
Modifies uint64
|
|
Unbinds uint64
|
|
Searches uint64
|
|
statsMutex sync.RWMutex
|
|
}
|
|
|
|
func (stats *Stats) countConns(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Conns += delta
|
|
stats.ConnsCurrent += delta
|
|
if stats.ConnsCurrent > stats.ConnsMax {
|
|
stats.ConnsMax = stats.ConnsCurrent
|
|
}
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countConnsClose(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.ConnsCurrent -= delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countAdds(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Adds += delta
|
|
stats.statsMutex.Lock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countBinds(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Binds += delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countDeletes(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Deletes += delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countModifyDNs(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.ModifyDNs += delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countModifies(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Modifies += delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countUnbinds(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Unbinds += delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) countSearches(delta uint64) {
|
|
if stats != nil {
|
|
stats.statsMutex.Lock()
|
|
stats.Searches += delta
|
|
stats.statsMutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func (stats *Stats) Clone() *Stats {
|
|
var s2 *Stats
|
|
if stats != nil {
|
|
s2 = &Stats{}
|
|
stats.statsMutex.RLock()
|
|
s2.Conns = stats.Conns
|
|
s2.ConnsCurrent = stats.ConnsCurrent
|
|
s2.Adds = stats.Adds
|
|
s2.Binds = stats.Binds
|
|
s2.Deletes = stats.Deletes
|
|
s2.ModifyDNs = stats.ModifyDNs
|
|
s2.Modifies = stats.Modifies
|
|
s2.Unbinds = stats.Unbinds
|
|
s2.Searches = stats.Searches
|
|
stats.statsMutex.RUnlock()
|
|
}
|
|
return s2
|
|
}
|