mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package client
|
|
|
|
import (
|
|
"bytes"
|
|
"strconv"
|
|
"sync"
|
|
"sync/atomic"
|
|
)
|
|
|
|
type Statistics struct {
|
|
PacketReceived uint64
|
|
PacketSent uint64
|
|
PacketLost uint64
|
|
MessageReceived uint64
|
|
MessageSent uint64
|
|
DisconnectTimes uint32
|
|
LostTimes uint32
|
|
LastMessageTime int64
|
|
|
|
once sync.Once
|
|
}
|
|
|
|
func (s *Statistics) MarshalJSON() ([]byte, error) {
|
|
var w bytes.Buffer
|
|
w.Grow(256)
|
|
w.WriteString(strconv.FormatUint(atomic.LoadUint64(&s.PacketReceived), 10))
|
|
w.WriteString(`,"packet_sent":`)
|
|
w.WriteString(strconv.FormatUint(atomic.LoadUint64(&s.PacketSent), 10))
|
|
w.WriteString(`,"packet_lost":`)
|
|
w.WriteString(strconv.FormatUint(atomic.LoadUint64(&s.PacketLost), 10))
|
|
w.WriteString(`,"message_received":`)
|
|
w.WriteString(strconv.FormatUint(atomic.LoadUint64(&s.MessageReceived), 10))
|
|
w.WriteString(`,"message_sent":`)
|
|
w.WriteString(strconv.FormatUint(atomic.LoadUint64(&s.MessageSent), 10))
|
|
w.WriteString(`,"disconnect_times":`)
|
|
w.WriteString(strconv.FormatUint(uint64(atomic.LoadUint32(&s.DisconnectTimes)), 10))
|
|
w.WriteString(`,"lost_times":`)
|
|
w.WriteString(strconv.FormatUint(uint64(atomic.LoadUint32(&s.LostTimes)), 10))
|
|
w.WriteString(`,"last_message_time":`)
|
|
w.WriteString(strconv.FormatInt(atomic.LoadInt64(&s.LastMessageTime), 10))
|
|
w.WriteByte('}')
|
|
return w.Bytes(), nil
|
|
}
|
|
|
|
func (c *QQClient) GetStatistics() *Statistics {
|
|
return &c.stat
|
|
}
|