dt1t and counter and refactoring using embedded interfaces
This commit is contained in:
94
src/udi/counter/counter.go
Normal file
94
src/udi/counter/counter.go
Normal file
@ -0,0 +1,94 @@
|
||||
package counter
|
||||
|
||||
import (
|
||||
"log"
|
||||
"time"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type statsTuple_t struct {
|
||||
Successful int `json:"good"`
|
||||
Failed int `json:"bad"`
|
||||
}
|
||||
|
||||
type stats_t struct {
|
||||
Received statsTuple_t `json:"received"`
|
||||
Archived statsTuple_t `json:"archived"`
|
||||
Dispatched statsTuple_t `json:"dispatched"`
|
||||
Handled map[string]statsTuple_t `json:"handled"`
|
||||
Stored statsTuple_t `json:"stored"`
|
||||
}
|
||||
|
||||
var stats stats_t
|
||||
|
||||
func S(id string) {
|
||||
switch id {
|
||||
case "Received":
|
||||
stats.Received.Successful = stats.Received.Successful + 1
|
||||
case "Archived":
|
||||
stats.Archived.Successful += 1
|
||||
case "Dispatched":
|
||||
stats.Dispatched.Successful += 1
|
||||
case "Stored":
|
||||
stats.Stored.Successful += 1
|
||||
default:
|
||||
log.Printf("Unknown stats id %s", id)
|
||||
}
|
||||
}
|
||||
|
||||
func F(id string) {
|
||||
switch id {
|
||||
case "Received":
|
||||
stats.Received.Failed += 1
|
||||
case "Archived":
|
||||
stats.Archived.Failed += 1
|
||||
case "Dispatched":
|
||||
stats.Dispatched.Failed += 1
|
||||
case "Stored":
|
||||
stats.Stored.Failed += 1
|
||||
default:
|
||||
log.Printf("Unknown stats id %s", id)
|
||||
}
|
||||
}
|
||||
|
||||
func SH(id string) {
|
||||
if _, ok := stats.Handled[id]; ok {
|
||||
tuple := stats.Handled[id]
|
||||
tuple.Successful += 1
|
||||
stats.Handled[id] = tuple
|
||||
} else {
|
||||
stats.Handled[id] = statsTuple_t { Successful:1, Failed:0, }
|
||||
}
|
||||
}
|
||||
|
||||
func FH(id string) {
|
||||
if _, ok := stats.Handled[id]; ok {
|
||||
tuple := stats.Handled[id]
|
||||
tuple.Failed += 1
|
||||
stats.Handled[id] = tuple
|
||||
} else {
|
||||
stats.Handled[id] = statsTuple_t { Successful:0, Failed:1, }
|
||||
}
|
||||
}
|
||||
|
||||
func InitCounter() {
|
||||
stats = stats_t {
|
||||
Received: statsTuple_t {Successful:0,Failed:0,},
|
||||
Archived: statsTuple_t {Successful:0,Failed:0,},
|
||||
Dispatched: statsTuple_t {Successful:0,Failed:0,},
|
||||
Stored: statsTuple_t {Successful:0,Failed:0,},
|
||||
Handled: make(map[string]statsTuple_t),
|
||||
}
|
||||
|
||||
go func() {
|
||||
for {
|
||||
sj, err := json.Marshal(stats)
|
||||
if err != nil {
|
||||
log.Printf("Unable to marshal stats object: %s", err)
|
||||
}
|
||||
log.Println(string(sj))
|
||||
time.Sleep(time.Second * 60)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
Reference in New Issue
Block a user