fixes around http response caching, updated the mb icon in the dashboard, and isolated web socket events

This commit is contained in:
LukePulverenti
2013-03-01 16:22:34 -05:00
parent 4c50301e7c
commit fe3323a492
20 changed files with 337 additions and 133 deletions

View File

@@ -26,6 +26,24 @@ namespace MediaBrowser.Server.Implementations.Library
/// </summary>
public class LibraryManager : ILibraryManager
{
/// <summary>
/// Gets the list of entity resolution ignore rules
/// </summary>
/// <value>The entity resolution ignore rules.</value>
public IEnumerable<IResolutionIgnoreRule> EntityResolutionIgnoreRules { get; private set; }
/// <summary>
/// Gets the list of BasePluginFolders added by plugins
/// </summary>
/// <value>The plugin folders.</value>
public IEnumerable<IVirtualFolderCreator> PluginFolderCreators { get; set; }
/// <summary>
/// Gets the list of currently registered entity resolvers
/// </summary>
/// <value>The entity resolvers enumerable.</value>
public IEnumerable<IBaseItemResolver> EntityResolvers { get; private set; }
#region LibraryChanged Event
/// <summary>
/// Fires whenever any validation routine adds or removes items. The added and removed items are properties of the args.
@@ -40,19 +58,6 @@ namespace MediaBrowser.Server.Implementations.Library
public void ReportLibraryChanged(ChildrenChangedEventArgs args)
{
EventHelper.QueueEventIfNotNull(LibraryChanged, this, args, _logger);
// Had to put this in a separate method to avoid an implicitly captured closure
SendLibraryChangedWebSocketMessage(args);
}
/// <summary>
/// Sends the library changed web socket message.
/// </summary>
/// <param name="args">The <see cref="ChildrenChangedEventArgs" /> instance containing the event data.</param>
private void SendLibraryChangedWebSocketMessage(ChildrenChangedEventArgs args)
{
// Notify connected ui's
Kernel.ServerManager.SendWebSocketMessage("LibraryChanged", () => DtoBuilder.GetLibraryUpdateInfo(args));
}
#endregion
@@ -94,6 +99,19 @@ namespace MediaBrowser.Server.Implementations.Library
kernel.ConfigurationUpdated += kernel_ConfigurationUpdated;
}
/// <summary>
/// Adds the parts.
/// </summary>
/// <param name="rules">The rules.</param>
/// <param name="pluginFolders">The plugin folders.</param>
/// <param name="resolvers">The resolvers.</param>
public void AddParts(IEnumerable<IResolutionIgnoreRule> rules, IEnumerable<IVirtualFolderCreator> pluginFolders, IEnumerable<IBaseItemResolver> resolvers)
{
EntityResolutionIgnoreRules = rules;
PluginFolderCreators = pluginFolders;
EntityResolvers = resolvers;
}
/// <summary>
/// The _root folder
/// </summary>
@@ -162,7 +180,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>BaseItem.</returns>
public BaseItem ResolveItem(ItemResolveArgs args)
{
return Kernel.EntityResolvers.Select(r => r.ResolvePath(args)).FirstOrDefault(i => i != null);
return EntityResolvers.Select(r => r.ResolvePath(args)).FirstOrDefault(i => i != null);
}
/// <summary>
@@ -195,7 +213,7 @@ namespace MediaBrowser.Server.Implementations.Library
};
// Return null if ignore rules deem that we should do so
if (Kernel.EntityResolutionIgnoreRules.Any(r => r.ShouldIgnore(args)))
if (EntityResolutionIgnoreRules.Any(r => r.ShouldIgnore(args)))
{
return null;
}
@@ -269,7 +287,7 @@ namespace MediaBrowser.Server.Implementations.Library
var rootFolder = Kernel.ItemRepository.RetrieveItem(rootFolderPath.GetMBId(typeof(AggregateFolder))) as AggregateFolder ?? (AggregateFolder)ResolvePath(rootFolderPath);
// Add in the plug-in folders
foreach (var child in Kernel.PluginFolderCreators)
foreach (var child in PluginFolderCreators)
{
rootFolder.AddVirtualChild(child.GetFolder());
}

View File

@@ -83,6 +83,10 @@ namespace MediaBrowser.Server.Implementations.Library
/// </summary>
private readonly ILogger _logger;
/// <summary>
/// Gets or sets the kernel.
/// </summary>
/// <value>The kernel.</value>
private Kernel Kernel { get; set; }
/// <summary>
@@ -124,9 +128,6 @@ namespace MediaBrowser.Server.Implementations.Library
private void OnUserUpdated(User user)
{
EventHelper.QueueEventIfNotNull(UserUpdated, this, new GenericEventArgs<User> { Argument = user }, _logger);
// Notify connected ui's
Kernel.ServerManager.SendWebSocketMessage("UserUpdated", new DtoBuilder(_logger).GetDtoUser(user));
}
#endregion
@@ -142,9 +143,6 @@ namespace MediaBrowser.Server.Implementations.Library
private void OnUserDeleted(User user)
{
EventHelper.QueueEventIfNotNull(UserDeleted, this, new GenericEventArgs<User> { Argument = user }, _logger);
// Notify connected ui's
Kernel.ServerManager.SendWebSocketMessage("UserDeleted", user.Id.ToString());
}
#endregion