36 lines
589 B
Go
36 lines
589 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type streamStats struct {
|
|
messageIn int
|
|
messageOut int
|
|
start time.Time
|
|
mutex sync.Mutex
|
|
}
|
|
|
|
func newStreamStats() streamStats {
|
|
return streamStats{start: time.Now()}
|
|
}
|
|
|
|
func (s *streamStats) msgInInc() {
|
|
s.mutex.Lock()
|
|
s.messageIn++
|
|
s.mutex.Unlock()
|
|
}
|
|
func (s *streamStats) msgOutInc() {
|
|
s.mutex.Lock()
|
|
s.messageOut++
|
|
s.mutex.Unlock()
|
|
}
|
|
|
|
func (s *streamStats) Print() {
|
|
fmt.Printf("Messages In: %d\n", s.messageIn)
|
|
fmt.Printf("Messages Out: %d\n", s.messageOut)
|
|
fmt.Printf("Total Time: %s\n", time.Since(s.start))
|
|
}
|