(now time.Time, closeWait time.Duration)
| 129 | } |
| 130 | |
| 131 | func (s *StatsWorker) Flush(now time.Time, closeWait time.Duration) bool { |
| 132 | ts := timestamppb.New(now) |
| 133 | |
| 134 | s.lock.Lock() |
| 135 | stats := make([]*livekit.AnalyticsStat, 0, len(s.incomingPerTrack)+len(s.outgoingPerTrack)) |
| 136 | |
| 137 | incomingPerTrack := s.incomingPerTrack |
| 138 | s.incomingPerTrack = make(map[livekit.TrackID][]*livekit.AnalyticsStat) |
| 139 | |
| 140 | outgoingPerTrack := s.outgoingPerTrack |
| 141 | s.outgoingPerTrack = make(map[livekit.TrackID][]*livekit.AnalyticsStat) |
| 142 | |
| 143 | closed := !s.closedAt.IsZero() && now.Sub(s.closedAt) > closeWait |
| 144 | s.lock.Unlock() |
| 145 | |
| 146 | stats = s.collectStats(ts, livekit.StreamType_UPSTREAM, incomingPerTrack, stats) |
| 147 | stats = s.collectStats(ts, livekit.StreamType_DOWNSTREAM, outgoingPerTrack, stats) |
| 148 | if len(stats) > 0 { |
| 149 | s.t.SendStats(s.ctx, stats) |
| 150 | } |
| 151 | |
| 152 | return closed |
| 153 | } |
| 154 | |
| 155 | func (s *StatsWorker) Close(guard *ReferenceGuard) bool { |
| 156 | s.lock.Lock() |
no test coverage detected