RecordingNotifier.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Threading.Tasks;
  7. using MediaBrowser.Controller.Library;
  8. using MediaBrowser.Controller.LiveTv;
  9. using MediaBrowser.Controller.Plugins;
  10. using MediaBrowser.Controller.Session;
  11. using MediaBrowser.Model.Logging;
  12. namespace MediaBrowser.Server.Implementations.EntryPoints
  13. {
  14. public class RecordingNotifier : IServerEntryPoint
  15. {
  16. private readonly ILiveTvManager _liveTvManager;
  17. private readonly ISessionManager _sessionManager;
  18. private readonly IUserManager _userManager;
  19. private readonly ILogger _logger;
  20. public RecordingNotifier(ISessionManager sessionManager, IUserManager userManager, ILogger logger, ILiveTvManager liveTvManager)
  21. {
  22. _sessionManager = sessionManager;
  23. _userManager = userManager;
  24. _logger = logger;
  25. _liveTvManager = liveTvManager;
  26. }
  27. public void Run()
  28. {
  29. _liveTvManager.TimerCancelled += _liveTvManager_TimerCancelled;
  30. _liveTvManager.SeriesTimerCancelled += _liveTvManager_SeriesTimerCancelled;
  31. _liveTvManager.TimerCreated += _liveTvManager_TimerCreated;
  32. _liveTvManager.SeriesTimerCreated += _liveTvManager_SeriesTimerCreated;
  33. }
  34. private void _liveTvManager_SeriesTimerCreated(object sender, Model.Events.GenericEventArgs<TimerEventInfo> e)
  35. {
  36. SendMessage("SeriesTimerCreated", e.Argument);
  37. }
  38. private void _liveTvManager_TimerCreated(object sender, Model.Events.GenericEventArgs<TimerEventInfo> e)
  39. {
  40. SendMessage("TimerCreated", e.Argument);
  41. }
  42. private void _liveTvManager_SeriesTimerCancelled(object sender, Model.Events.GenericEventArgs<TimerEventInfo> e)
  43. {
  44. SendMessage("SeriesTimerCancelled", e.Argument);
  45. }
  46. private void _liveTvManager_TimerCancelled(object sender, Model.Events.GenericEventArgs<TimerEventInfo> e)
  47. {
  48. SendMessage("TimerCancelled", e.Argument);
  49. }
  50. private async void SendMessage(string name, TimerEventInfo info)
  51. {
  52. var users = _userManager.Users.Where(i => i.Policy.EnableLiveTvAccess).ToList();
  53. foreach (var user in users)
  54. {
  55. try
  56. {
  57. await _sessionManager.SendMessageToUserSessions<TimerEventInfo>(user.Id.ToString("N"), name, info, CancellationToken.None);
  58. }
  59. catch (Exception ex)
  60. {
  61. _logger.ErrorException("Error sending message", ex);
  62. }
  63. }
  64. }
  65. public void Dispose()
  66. {
  67. _liveTvManager.TimerCancelled -= _liveTvManager_TimerCancelled;
  68. _liveTvManager.SeriesTimerCancelled -= _liveTvManager_SeriesTimerCancelled;
  69. _liveTvManager.TimerCreated -= _liveTvManager_TimerCreated;
  70. _liveTvManager.SeriesTimerCreated -= _liveTvManager_SeriesTimerCreated;
  71. }
  72. }
  73. }