Add metrics
This commit is contained in:
49
bus/bus.go
Normal file
49
bus/bus.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user