This commit is contained in:
Till Faelligen 2022-09-29 10:48:47 +02:00
parent f48d0fb569
commit f284e8872f
No known key found for this signature in database
GPG key ID: 3DF82D8AB9211D4E

View file

@ -95,30 +95,7 @@ func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Ms
return true return true
} }
_, sender, _ := gomatrixserverlib.SplitID('@', event.Sender()) s.storeMessageStats(ctx, event.Type(), event.Sender())
switch event.Type() {
case "m.room.message":
s.msgCountsLock.Lock()
msgCount := s.msgCounts[s.serverName]
msgCount.Messages++
if sender == s.serverName {
msgCount.SentMessages++
}
s.msgCounts[s.serverName] = msgCount
s.msgCountsLock.Unlock()
case "m.room.encrypted":
s.msgCountsLock.Lock()
msgCount := s.msgCounts[s.serverName]
msgCount.MessagesE2EE++
if sender == s.serverName {
msgCount.SentMessagesE2EE++
}
s.msgCounts[s.serverName] = msgCount
s.msgCountsLock.Unlock()
}
s.storeMessageStats(ctx)
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"event_id": event.EventID(), "event_id": event.EventID(),
@ -139,17 +116,30 @@ func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Ms
return true return true
} }
func (s *OutputRoomEventConsumer) storeMessageStats(ctx context.Context) { func (s *OutputRoomEventConsumer) storeMessageStats(ctx context.Context, eventType, eventSender string) {
s.msgCountsLock.Lock() s.msgCountsLock.Lock()
defer s.msgCountsLock.Unlock() defer s.msgCountsLock.Unlock()
var sumStats int64 = 0
for _, stats := range s.msgCounts { _, sender, err := gomatrixserverlib.SplitID('@', eventSender)
sumStats += stats.Messages + stats.SentMessages + stats.MessagesE2EE + stats.SentMessagesE2EE if err != nil {
}
// Nothing to do
if sumStats == 0 {
return return
} }
msgCount := s.msgCounts[s.serverName]
switch eventType {
case "m.room.message":
msgCount.Messages++
if sender == s.serverName {
msgCount.SentMessages++
}
case "m.room.encrypted":
msgCount.MessagesE2EE++
if sender == s.serverName {
msgCount.SentMessagesE2EE++
}
default:
return
}
s.msgCounts[s.serverName] = msgCount
for serverName, stats := range s.msgCounts { for serverName, stats := range s.msgCounts {
err := s.db.UpsertDailyMessages(ctx, serverName, stats) err := s.db.UpsertDailyMessages(ctx, serverName, stats)
if err != nil { if err != nil {