SyncNotificationEntryPoint.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Threading;
  2. using MediaBrowser.Controller.Plugins;
  3. using MediaBrowser.Controller.Session;
  4. using MediaBrowser.Controller.Sync;
  5. using MediaBrowser.Model.Events;
  6. using MediaBrowser.Model.Sync;
  7. namespace Emby.Server.Implementations.Sync
  8. {
  9. public class SyncNotificationEntryPoint : IServerEntryPoint
  10. {
  11. private readonly ISessionManager _sessionManager;
  12. private readonly ISyncManager _syncManager;
  13. public SyncNotificationEntryPoint(ISyncManager syncManager, ISessionManager sessionManager)
  14. {
  15. _syncManager = syncManager;
  16. _sessionManager = sessionManager;
  17. }
  18. public void Run()
  19. {
  20. _syncManager.SyncJobItemUpdated += _syncManager_SyncJobItemUpdated;
  21. }
  22. private async void _syncManager_SyncJobItemUpdated(object sender, GenericEventArgs<SyncJobItem> e)
  23. {
  24. var item = e.Argument;
  25. if (item.Status == SyncJobItemStatus.ReadyToTransfer)
  26. {
  27. try
  28. {
  29. await _sessionManager.SendMessageToUserDeviceSessions(item.TargetId, "SyncJobItemReady", item, CancellationToken.None).ConfigureAwait(false);
  30. }
  31. catch
  32. {
  33. }
  34. }
  35. if (item.Status == SyncJobItemStatus.Cancelled)
  36. {
  37. try
  38. {
  39. await _sessionManager.SendMessageToUserDeviceSessions(item.TargetId, "SyncJobItemCancelled", item, CancellationToken.None).ConfigureAwait(false);
  40. }
  41. catch
  42. {
  43. }
  44. }
  45. }
  46. public void Dispose()
  47. {
  48. _syncManager.SyncJobItemUpdated -= _syncManager_SyncJobItemUpdated;
  49. }
  50. }
  51. }