mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-11 18:20:28 +09:00
83 lines
2.3 KiB
Go
83 lines
2.3 KiB
Go
package sync
|
|
|
|
import (
|
|
"sync"
|
|
"sync/atomic"
|
|
|
|
"github.com/anyproto/any-sync/commonspace/sync/syncdeps"
|
|
"github.com/anyproto/any-sync/metric"
|
|
)
|
|
|
|
type syncMetric struct {
|
|
sync.Mutex
|
|
incomingMsgCount atomic.Int32
|
|
incomingMsgSize atomic.Int64
|
|
outgoingMsgCount atomic.Int32
|
|
outgoingMsgSize atomic.Int64
|
|
incomingReqCount atomic.Int32
|
|
incomingReqSize atomic.Int64
|
|
outgoingReqCount atomic.Int32
|
|
outgoingReqSize atomic.Int64
|
|
receivedRespCount atomic.Int32
|
|
receivedRespSize atomic.Int64
|
|
sentRespCount atomic.Int32
|
|
sentRespSize atomic.Int64
|
|
totalSize atomic.Int64
|
|
}
|
|
|
|
func (m *syncMetric) SyncMetricState() metric.SyncMetricState {
|
|
return metric.SyncMetricState{
|
|
IncomingMsgCount: uint32(m.incomingMsgCount.Load()),
|
|
IncomingMsgSize: uint64(m.incomingMsgSize.Load()),
|
|
OutgoingMsgCount: uint32(m.outgoingMsgCount.Load()),
|
|
OutgoingMsgSize: uint64(m.outgoingMsgSize.Load()),
|
|
IncomingReqCount: uint32(m.incomingReqCount.Load()),
|
|
IncomingReqSize: uint64(m.incomingReqSize.Load()),
|
|
OutgoingReqCount: uint32(m.outgoingReqCount.Load()),
|
|
OutgoingReqSize: uint64(m.outgoingReqSize.Load()),
|
|
ReceivedRespCount: uint32(m.receivedRespCount.Load()),
|
|
ReceivedRespSize: uint64(m.receivedRespSize.Load()),
|
|
SentRespCount: uint32(m.sentRespCount.Load()),
|
|
SentRespSize: uint64(m.sentRespSize.Load()),
|
|
TotalSize: uint64(m.totalSize.Load()),
|
|
}
|
|
}
|
|
|
|
func (m *syncMetric) UpdateQueueSize(size uint64, msgType int, add bool) {
|
|
var (
|
|
atSize *atomic.Int64
|
|
atCount *atomic.Int32
|
|
)
|
|
switch msgType {
|
|
case syncdeps.MsgTypeIncoming:
|
|
atSize = &m.incomingMsgSize
|
|
atCount = &m.incomingMsgCount
|
|
case syncdeps.MsgTypeOutgoing:
|
|
atSize = &m.outgoingMsgSize
|
|
atCount = &m.outgoingMsgCount
|
|
case syncdeps.MsgTypeIncomingRequest:
|
|
atSize = &m.incomingReqSize
|
|
atCount = &m.incomingReqCount
|
|
case syncdeps.MsgTypeOutgoingRequest:
|
|
atSize = &m.outgoingReqSize
|
|
atCount = &m.outgoingReqCount
|
|
case syncdeps.MsgTypeReceivedResponse:
|
|
atSize = &m.receivedRespSize
|
|
atCount = &m.receivedRespCount
|
|
case syncdeps.MsgTypeSentResponse:
|
|
atSize = &m.sentRespSize
|
|
atCount = &m.sentRespCount
|
|
default:
|
|
return
|
|
}
|
|
intSize := int64(size)
|
|
if add {
|
|
atSize.Add(intSize)
|
|
atCount.Add(1)
|
|
m.totalSize.Add(intSize)
|
|
} else {
|
|
atSize.Add(-intSize)
|
|
atCount.Add(-1)
|
|
m.totalSize.Add(-intSize)
|
|
}
|
|
}
|