Add metrics

This commit is contained in:
2024-03-18 12:19:16 +01:00
parent c3b35cdd2d
commit 8d5562a2c7
6 changed files with 145 additions and 21 deletions

49
bus/bus.go Normal file
View File

@@ -0,0 +1,49 @@
package bus
import (
"time"
"git.t-juice.club/torjus/ghettoptt/metrics"
"github.com/godbus/dbus/v5"
)
type MumbleBus struct {
conn *dbus.Conn
obj dbus.BusObject
metrics *metrics.MumbleMetricsCollector
lastTalked time.Time
}
func NewMumbleBus(m *metrics.MumbleMetricsCollector) *MumbleBus {
mb := &MumbleBus{
metrics: m,
}
conn, err := dbus.ConnectSessionBus()
if err != nil {
panic(err)
}
mb.obj = conn.Object("net.sourceforge.mumble.mumble", "/")
mb.conn = conn
return mb
}
func (m *MumbleBus) Close() error {
return m.conn.Close()
}
func (m *MumbleBus) StartTalking() error {
m.obj.Call("net.sourceforge.mumble.Mumble.startTalking", 0)
m.lastTalked = time.Now()
m.metrics.PTTTogglesTotal.Add(1)
return nil
}
func (m *MumbleBus) StopTalking() error {
m.obj.Call("net.sourceforge.mumble.Mumble.stopTalking", 0)
duration := time.Since(m.lastTalked)
m.lastTalked = time.Time{}
m.metrics.TalkSecondsTotal.Add(duration.Seconds())
m.metrics.PTTTogglesTotal.Add(1)
return nil
}