void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
        {
            string key = e.DeviceId + "-" + e.Users[0].Id.ToString("N") + "-" + e.Item.Id.ToString("N");

            if (playback_trackers != null && playback_trackers.ContainsKey(key))
            {
                try
                {
                    //_logger.Info("Playback progress tracker found, processing progress : " + key);
                    PlaybackTracker tracker = playback_trackers[key];
                    tracker.ProcessProgress(e);
                    if (tracker.TrackedPlaybackInfo != null)
                    {
                        _logger.Debug("Saving playback tracking activity in DB");
                        _repository.UpdatePlaybackAction(tracker.TrackedPlaybackInfo);
                    }
                }
                catch (Exception exp)
                {
                    playback_trackers.Remove(key);
                    throw new Exception("Error saving playback state: " + exp.Message);
                }
            }
            else
            {
                _logger.Debug("Playback progress did not have a tracker : " + key);
            }
        }
Пример #2
0
        void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
        {
            string key = e.DeviceId + "-" + e.Users[0].Id.ToString("N") + "-" + e.Item.Id.ToString("N");

            if (playback_trackers != null && playback_trackers.ContainsKey(key))
            {
                try
                {
                    PlaybackTracker tracker = playback_trackers[key];
                    DateTime        now     = DateTime.Now;
                    if (now.Subtract(tracker.LastUpdated).TotalSeconds > 20) // update every 20 seconds
                    {
                        tracker.LastUpdated = now;
                        _logger.LogInformation("Processing playback tracker : {Key}", key);
                        List <string> event_log = tracker.ProcessProgress(e);
                        if (event_log.Count > 0)
                        {
                            _logger.LogDebug("ProcessProgress : {Events}", string.Join("", event_log));
                        }
                        if (tracker.TrackedPlaybackInfo != null)
                        {
                            _repository.UpdatePlaybackAction(tracker.TrackedPlaybackInfo);
                        }
                    }
                }
                catch (Exception exp)
                {
                    playback_trackers.Remove(key);
                    throw new Exception("Error saving playback state: " + exp.Message);
                }
            }
            else
            {
                _logger.LogDebug("Playback progress did not have a tracker : {Key}", key);
            }
        }