| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package stats
-
- import (
- "net"
-
- "github.com/9seconds/mtg/mtproto"
- )
-
- const (
- connectionsChanLength = 10
- trafficChanLength = 10
- )
-
- var (
- crashesChan = make(chan struct{})
- statsChan = make(chan chan<- Stats)
- connectionsChan = make(chan connectionData, connectionsChanLength)
- trafficChan = make(chan trafficData, trafficChanLength)
- )
-
- type connectionData struct {
- connectionType mtproto.ConnectionType
- connected bool
- addr *net.TCPAddr
- }
-
- type trafficData struct {
- traffic int
- ingress bool
- }
-
- // NewCrash indicates new crash.
- func NewCrash() {
- crashesChan <- struct{}{}
- }
-
- // ClientConnected indicates that new client was connected.
- func ClientConnected(connectionType mtproto.ConnectionType, addr *net.TCPAddr) {
- connectionsChan <- connectionData{
- connectionType: connectionType,
- addr: addr,
- connected: true,
- }
- }
-
- // ClientDisconnected indicates that client was disconnected.
- func ClientDisconnected(connectionType mtproto.ConnectionType, addr *net.TCPAddr) {
- connectionsChan <- connectionData{
- connectionType: connectionType,
- addr: addr,
- connected: false,
- }
- }
-
- // IngressTraffic accounts new ingress traffic.
- func IngressTraffic(traffic int) {
- trafficChan <- trafficData{
- traffic: traffic,
- ingress: true,
- }
- }
-
- // EgressTraffic accounts new ingress traffic.
- func EgressTraffic(traffic int) {
- trafficChan <- trafficData{
- traffic: traffic,
- ingress: false,
- }
- }
-
- func GetStats() Stats {
- rpcChan := make(chan Stats)
- statsChan <- rpcChan
- return <-rpcChan
- }
|