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  }