|
|
|
@ -15,34 +15,10 @@ type ServerStats struct { |
|
|
|
BytesOut *DurationCounter |
|
|
|
} |
|
|
|
|
|
|
|
type Channels struct { |
|
|
|
Connections chan *TimedValue |
|
|
|
Requests chan *TimedValue |
|
|
|
AssignRequests chan *TimedValue |
|
|
|
ReadRequests chan *TimedValue |
|
|
|
WriteRequests chan *TimedValue |
|
|
|
DeleteRequests chan *TimedValue |
|
|
|
BytesIn chan *TimedValue |
|
|
|
BytesOut chan *TimedValue |
|
|
|
} |
|
|
|
|
|
|
|
var ( |
|
|
|
Chan *Channels |
|
|
|
ServStats = NewServerStats() |
|
|
|
) |
|
|
|
|
|
|
|
func init() { |
|
|
|
Chan = &Channels{ |
|
|
|
Connections: make(chan *TimedValue, 100), |
|
|
|
Requests: make(chan *TimedValue, 100), |
|
|
|
AssignRequests: make(chan *TimedValue, 100), |
|
|
|
ReadRequests: make(chan *TimedValue, 100), |
|
|
|
WriteRequests: make(chan *TimedValue, 100), |
|
|
|
DeleteRequests: make(chan *TimedValue, 100), |
|
|
|
BytesIn: make(chan *TimedValue, 100), |
|
|
|
BytesOut: make(chan *TimedValue, 100), |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func NewServerStats() *ServerStats { |
|
|
|
return &ServerStats{ |
|
|
|
Requests: NewDurationCounter(), |
|
|
|
@ -57,57 +33,33 @@ func NewServerStats() *ServerStats { |
|
|
|
} |
|
|
|
|
|
|
|
func ConnectionOpen() { |
|
|
|
Chan.Connections <- NewTimedValue(time.Now(), 1) |
|
|
|
ServStats.Connections.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func ConnectionClose() { |
|
|
|
Chan.Connections <- NewTimedValue(time.Now(), -1) |
|
|
|
ServStats.Connections.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func RequestOpen() { |
|
|
|
Chan.Requests <- NewTimedValue(time.Now(), 1) |
|
|
|
ServStats.Requests.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func RequestClose() { |
|
|
|
Chan.Requests <- NewTimedValue(time.Now(), -1) |
|
|
|
ServStats.Requests.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
|
|
|
|
} |
|
|
|
func AssignRequest() { |
|
|
|
Chan.AssignRequests <- NewTimedValue(time.Now(), 1) |
|
|
|
ServStats.AssignRequests.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func ReadRequest() { |
|
|
|
Chan.ReadRequests <- NewTimedValue(time.Now(), 1) |
|
|
|
ServStats.ReadRequests.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func WriteRequest() { |
|
|
|
Chan.WriteRequests <- NewTimedValue(time.Now(), 1) |
|
|
|
ServStats.WriteRequests.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func DeleteRequest() { |
|
|
|
Chan.DeleteRequests <- NewTimedValue(time.Now(), 1) |
|
|
|
ServStats.DeleteRequests.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func BytesIn(val int64) { |
|
|
|
Chan.BytesIn <- NewTimedValue(time.Now(), val) |
|
|
|
ServStats.BytesIn.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |
|
|
|
func BytesOut(val int64) { |
|
|
|
Chan.BytesOut <- NewTimedValue(time.Now(), val) |
|
|
|
} |
|
|
|
|
|
|
|
func (ss *ServerStats) Start() { |
|
|
|
for { |
|
|
|
select { |
|
|
|
case tv := <-Chan.Connections: |
|
|
|
ss.Connections.Add(tv) |
|
|
|
case tv := <-Chan.Requests: |
|
|
|
ss.Requests.Add(tv) |
|
|
|
case tv := <-Chan.AssignRequests: |
|
|
|
ss.AssignRequests.Add(tv) |
|
|
|
case tv := <-Chan.ReadRequests: |
|
|
|
ss.ReadRequests.Add(tv) |
|
|
|
case tv := <-Chan.WriteRequests: |
|
|
|
ss.WriteRequests.Add(tv) |
|
|
|
case tv := <-Chan.ReadRequests: |
|
|
|
ss.ReadRequests.Add(tv) |
|
|
|
case tv := <-Chan.DeleteRequests: |
|
|
|
ss.DeleteRequests.Add(tv) |
|
|
|
case tv := <-Chan.BytesIn: |
|
|
|
ss.BytesIn.Add(tv) |
|
|
|
case tv := <-Chan.BytesOut: |
|
|
|
ss.BytesOut.Add(tv) |
|
|
|
} |
|
|
|
} |
|
|
|
ServStats.BytesOut.Add(NewTimedValue(time.Now(), 1)) |
|
|
|
} |