github.com/livekit/protocol@v1.39.3/observability/sessiontimer.go (about) 1 package observability 2 3 import "time" 4 5 type SessionTimer struct { 6 lastMilli int64 7 lastMin int64 8 } 9 10 func NewSessionTimer(startTime time.Time) *SessionTimer { 11 ts := startTime.UnixMilli() 12 return &SessionTimer{ts, ts} 13 } 14 15 func (h *SessionTimer) Advance(now time.Time) (millis, mins int64) { 16 ts := now.UnixMilli() 17 if ts > h.lastMilli { 18 millis = ts - h.lastMilli 19 h.lastMilli = ts 20 } 21 if ts > h.lastMin { 22 mins = 1 23 h.lastMin += 60000 24 } 25 return 26 }