aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Sync/SyncNotificationEntryPoint.cs
blob: 7017b422ee61496d55e45a6283e144c7bef4a974 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System.Threading;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Session;
using MediaBrowser.Controller.Sync;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Sync;

namespace MediaBrowser.Server.Implementations.Sync
{
    public class SyncNotificationEntryPoint : IServerEntryPoint
    {
        private readonly ISessionManager _sessionManager;
        private readonly ISyncManager _syncManager;

        public SyncNotificationEntryPoint(ISyncManager syncManager, ISessionManager sessionManager)
        {
            _syncManager = syncManager;
            _sessionManager = sessionManager;
        }

        public void Run()
        {
            _syncManager.SyncJobItemUpdated += _syncManager_SyncJobItemUpdated;
        }

        private async void _syncManager_SyncJobItemUpdated(object sender, GenericEventArgs<SyncJobItem> e)
        {
            var item = e.Argument;

            if (item.Status == SyncJobItemStatus.ReadyToTransfer)
            {
                try
                {
                    await _sessionManager.SendMessageToUserDeviceSessions(item.TargetId, "SyncJobItemReady", item, CancellationToken.None).ConfigureAwait(false);
                }
                catch
                {

                }
            }
        }

        public void Dispose()
        {
            _syncManager.SyncJobItemUpdated -= _syncManager_SyncJobItemUpdated;
        }
    }
}