llmongodb/counter.go

181 lines
2.7 KiB
Go
Raw Normal View History

2015-11-25 09:05:45 +01:00
// counter
package main
import (
"sync"
"time"
2015-11-25 09:05:45 +01:00
)
2018-11-27 15:10:19 +01:00
// Counterchan counter structure
2016-12-20 15:37:32 +01:00
type Counterchan struct {
tipo string
val int
}
2016-10-05 11:55:50 +02:00
// Counter structure
2015-11-25 09:05:45 +01:00
type Counter struct {
2016-11-10 09:01:10 +01:00
mu sync.Mutex
user int
log int
insert int
rem int
err int
dup int
time time.Duration
wg int
2015-11-25 09:05:45 +01:00
}
2016-10-05 11:55:50 +02:00
// NewCounter iniitialized Counter structure
2015-11-25 09:05:45 +01:00
func NewCounter() *Counter {
return &Counter{
2016-11-10 09:01:10 +01:00
user: 0,
log: 0,
insert: 0,
err: 0,
rem: 0,
dup: 0,
time: 0,
wg: 0,
2015-11-25 09:05:45 +01:00
}
}
2018-11-27 15:10:19 +01:00
// Run open channel to receive counter
2016-12-20 15:37:32 +01:00
func (c *Counter) Run() {
for {
tocount := <-counter
switch tocount.tipo {
case "user":
c.addUser()
case "dup":
c.addDuplicate(tocount.val)
case "ins":
c.addInsert(tocount.val)
case "log":
c.addLog(tocount.val)
case "rem":
c.addRem(tocount.val)
case "wg":
if tocount.val > 0 {
c.addWG()
} else {
c.delWG()
}
case "err":
c.addErr(tocount.val)
}
}
}
2016-10-05 11:55:50 +02:00
// AddUser increment number of users managed
2016-12-20 15:37:32 +01:00
func (c *Counter) addUser() {
2015-11-25 09:05:45 +01:00
c.user++
}
2016-10-05 11:55:50 +02:00
// AddDuplicate increment number of duplicates log
2016-12-20 15:37:32 +01:00
func (c *Counter) addDuplicate(add int) {
c.dup += add
2015-11-25 09:05:45 +01:00
}
2016-11-10 09:01:10 +01:00
// AddInsert increment number of inserted rows
2016-12-20 15:37:32 +01:00
func (c *Counter) addInsert(add int) {
2016-11-10 09:01:10 +01:00
c.insert += add
}
2016-10-05 11:55:50 +02:00
// AddLog increment number of log's rows managed
2016-12-20 15:37:32 +01:00
func (c *Counter) addLog(add int) {
2015-11-25 09:05:45 +01:00
c.log += add
}
2016-10-05 11:55:50 +02:00
//AddRem increment removed logs row
2016-12-20 15:37:32 +01:00
func (c *Counter) addRem(add int) {
2015-11-25 09:05:45 +01:00
c.rem += add
}
2016-10-05 11:55:50 +02:00
// AddWG ...
2016-12-20 15:37:32 +01:00
func (c *Counter) addWG() {
c.wg++
2015-11-25 09:05:45 +01:00
}
2016-10-05 11:55:50 +02:00
// AddErr ...
2016-12-20 15:37:32 +01:00
func (c *Counter) addErr(add int) {
c.err += add
2015-11-25 09:05:45 +01:00
}
2016-10-05 11:55:50 +02:00
// DelWG ...
2016-12-20 15:37:32 +01:00
func (c *Counter) delWG() {
c.wg--
2015-11-25 09:05:45 +01:00
}
2016-10-05 11:55:50 +02:00
// GetUser return total users
func (c *Counter) GetUser() (ret int) {
2015-11-25 09:05:45 +01:00
c.mu.Lock()
defer c.mu.Unlock()
2015-11-25 09:05:45 +01:00
ret = c.user
return
}
2016-10-05 11:55:50 +02:00
// GetDup return total duplicated logins
func (c *Counter) GetDup() (ret int) {
2015-11-25 09:05:45 +01:00
c.mu.Lock()
defer c.mu.Unlock()
2015-11-25 09:05:45 +01:00
ret = c.dup
return
}
2016-10-05 11:55:50 +02:00
// GetLog return total log's rows
func (c *Counter) GetLog() (ret int) {
2015-11-25 09:05:45 +01:00
c.mu.Lock()
defer c.mu.Unlock()
2015-11-25 09:05:45 +01:00
ret = c.log
return
}
2016-11-10 09:01:10 +01:00
// GetInsert return total inserted rows
func (c *Counter) GetInsert() (ret int) {
c.mu.Lock()
defer c.mu.Unlock()
ret = c.insert
return
}
2016-10-05 11:55:50 +02:00
// GetErr return total errors
func (c *Counter) GetErr() (ret int) {
2015-11-25 09:05:45 +01:00
c.mu.Lock()
defer c.mu.Unlock()
2015-11-25 09:05:45 +01:00
ret = c.err
return
}
2016-10-05 11:55:50 +02:00
// GetRem return total removed log's rows
func (c *Counter) GetRem() (ret int) {
2015-11-25 09:05:45 +01:00
c.mu.Lock()
defer c.mu.Unlock()
2015-11-25 09:05:45 +01:00
ret = c.rem
return
}
2016-10-05 11:55:50 +02:00
// GetWG ...
func (c *Counter) GetWG() (ret int) {
2015-11-25 09:05:45 +01:00
c.mu.Lock()
defer c.mu.Unlock()
ret = c.wg
2015-11-25 09:05:45 +01:00
return
}
2016-10-05 11:55:50 +02:00
// GetTime ...
func (c *Counter) GetTime() (ret float64) {
c.mu.Lock()
defer c.mu.Unlock()
ret = c.time.Seconds()
return
}
2016-10-05 11:55:50 +02:00
// SetTime ...
func (c *Counter) SetTime(t time.Duration) {
c.mu.Lock()
defer c.mu.Unlock()
c.time = t
}