Files
protocol/observability/sessiontimer.go
Paul Wells 316b0ddba7 handle session timer skips >1 min (#1227)
* handle session timer skips >1 min

* Create silly-books-attend.md
2025-09-23 20:35:07 -07:00

28 lines
498 B
Go

package observability
import "time"
type SessionTimer struct {
lastMilli int64
lastMin int64
}
func NewSessionTimer(startTime time.Time) *SessionTimer {
ts := startTime.UnixMilli()
return &SessionTimer{ts, ts}
}
func (h *SessionTimer) Advance(now time.Time) (millis, mins int64) {
ts := now.UnixMilli()
if ts > h.lastMilli {
millis = ts - h.lastMilli
h.lastMilli = ts
}
if ts > h.lastMin {
n := (ts - h.lastMin + 59999) / 60000
mins += n
h.lastMin += n * 60000
}
return
}