From eb72c2db513f5306eecccb94f0f1cd5296a7d7db Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 2 Oct 2013 21:22:50 -0400 Subject: updated nuget --- .../EntryPoints/LibraryChangedNotifier.cs | 47 +++++++++++----------- 1 file changed, 23 insertions(+), 24 deletions(-) (limited to 'MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs') diff --git a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs index 1306017ca..7a3081ab5 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Session; @@ -21,7 +20,6 @@ namespace MediaBrowser.Server.Implementations.EntryPoints private readonly ILibraryManager _libraryManager; private readonly ISessionManager _sessionManager; - private readonly IServerManager _serverManager; private readonly IUserManager _userManager; private readonly ILogger _logger; @@ -48,11 +46,10 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// private const int LibraryUpdateDuration = 20000; - public LibraryChangedNotifier(ILibraryManager libraryManager, ISessionManager sessionManager, IServerManager serverManager, IUserManager userManager, ILogger logger) + public LibraryChangedNotifier(ILibraryManager libraryManager, ISessionManager sessionManager, IUserManager userManager, ILogger logger) { _libraryManager = libraryManager; _sessionManager = sessionManager; - _serverManager = serverManager; _userManager = userManager; _logger = logger; } @@ -187,31 +184,33 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// The folders added to. /// The folders removed from. /// The cancellation token. - private async void SendChangeNotifications(IEnumerable itemsAdded, IEnumerable itemsUpdated, IEnumerable itemsRemoved, IEnumerable foldersAddedTo, IEnumerable foldersRemovedFrom, CancellationToken cancellationToken) + private async void SendChangeNotifications(List itemsAdded, List itemsUpdated, List itemsRemoved, List foldersAddedTo, List foldersRemovedFrom, CancellationToken cancellationToken) { - var currentSessions = _sessionManager.Sessions.ToList(); - - var users = currentSessions.Select(i => i.User) - .Where(i => i != null) - .Select(i => i.Id) - .Distinct() - .ToList(); - - foreach (var userId in users) + foreach (var user in _userManager.Users.ToList()) { - var id = userId; - var webSockets = currentSessions.Where(u => u.User != null && u.User.Id == id) - .SelectMany(i => i.WebSockets) + var id = user.Id; + var userSessions = _sessionManager.Sessions + .Where(u => u.User != null && u.User.Id == id && u.SessionController != null && u.IsActive) .ToList(); - try - { - await _serverManager.SendWebSocketMessageAsync("LibraryChanged", () => GetLibraryUpdateInfo(itemsAdded, itemsUpdated, itemsRemoved, foldersAddedTo, foldersRemovedFrom, id), webSockets, cancellationToken).ConfigureAwait(false); - } - catch (Exception ex) + if (userSessions.Count > 0) { - _logger.ErrorException("Error sending LibraryChanged message", ex); + var info = GetLibraryUpdateInfo(itemsAdded, itemsUpdated, itemsRemoved, foldersAddedTo, + foldersRemovedFrom, id); + + foreach (var userSession in userSessions) + { + try + { + await userSession.SessionController.SendLibraryUpdateInfo(info, cancellationToken).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error sending LibraryChanged message", ex); + } + } } + } } -- cgit v1.2.3