|
|
@ -12,6 +12,7 @@ using System.Threading.Tasks;
|
|
|
|
using Jellyfin.Data.Entities;
|
|
|
|
using Jellyfin.Data.Entities;
|
|
|
|
using Jellyfin.Data.Events;
|
|
|
|
using Jellyfin.Data.Events;
|
|
|
|
using MediaBrowser.Controller.Channels;
|
|
|
|
using MediaBrowser.Controller.Channels;
|
|
|
|
|
|
|
|
using MediaBrowser.Controller.Configuration;
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
|
|
using MediaBrowser.Controller.Library;
|
|
|
|
using MediaBrowser.Controller.Library;
|
|
|
@ -26,12 +27,8 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public class LibraryChangedNotifier : IServerEntryPoint
|
|
|
|
public class LibraryChangedNotifier : IServerEntryPoint
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// The library update duration.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
private const int LibraryUpdateDuration = 30000;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
|
|
|
|
|
private readonly IServerConfigurationManager _configurationManager;
|
|
|
|
private readonly IProviderManager _providerManager;
|
|
|
|
private readonly IProviderManager _providerManager;
|
|
|
|
private readonly ISessionManager _sessionManager;
|
|
|
|
private readonly ISessionManager _sessionManager;
|
|
|
|
private readonly IUserManager _userManager;
|
|
|
|
private readonly IUserManager _userManager;
|
|
|
@ -51,12 +48,14 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
|
|
|
|
|
|
|
|
public LibraryChangedNotifier(
|
|
|
|
public LibraryChangedNotifier(
|
|
|
|
ILibraryManager libraryManager,
|
|
|
|
ILibraryManager libraryManager,
|
|
|
|
|
|
|
|
IServerConfigurationManager configurationManager,
|
|
|
|
ISessionManager sessionManager,
|
|
|
|
ISessionManager sessionManager,
|
|
|
|
IUserManager userManager,
|
|
|
|
IUserManager userManager,
|
|
|
|
ILogger<LibraryChangedNotifier> logger,
|
|
|
|
ILogger<LibraryChangedNotifier> logger,
|
|
|
|
IProviderManager providerManager)
|
|
|
|
IProviderManager providerManager)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_libraryManager = libraryManager;
|
|
|
|
_libraryManager = libraryManager;
|
|
|
|
|
|
|
|
_configurationManager = configurationManager;
|
|
|
|
_sessionManager = sessionManager;
|
|
|
|
_sessionManager = sessionManager;
|
|
|
|
_userManager = userManager;
|
|
|
|
_userManager = userManager;
|
|
|
|
_logger = logger;
|
|
|
|
_logger = logger;
|
|
|
@ -196,12 +195,12 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
LibraryUpdateTimer = new Timer(
|
|
|
|
LibraryUpdateTimer = new Timer(
|
|
|
|
LibraryUpdateTimerCallback,
|
|
|
|
LibraryUpdateTimerCallback,
|
|
|
|
null,
|
|
|
|
null,
|
|
|
|
LibraryUpdateDuration,
|
|
|
|
TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration),
|
|
|
|
Timeout.Infinite);
|
|
|
|
Timeout.InfiniteTimeSpan);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite);
|
|
|
|
LibraryUpdateTimer.Change(TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (e.Item.GetParent() is Folder parent)
|
|
|
|
if (e.Item.GetParent() is Folder parent)
|
|
|
@ -229,11 +228,11 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (LibraryUpdateTimer is null)
|
|
|
|
if (LibraryUpdateTimer is null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite);
|
|
|
|
LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite);
|
|
|
|
LibraryUpdateTimer.Change(TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_itemsUpdated.Add(e.Item);
|
|
|
|
_itemsUpdated.Add(e.Item);
|
|
|
@ -256,11 +255,11 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (LibraryUpdateTimer is null)
|
|
|
|
if (LibraryUpdateTimer is null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite);
|
|
|
|
LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite);
|
|
|
|
LibraryUpdateTimer.Change(TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (e.Parent is Folder parent)
|
|
|
|
if (e.Parent is Folder parent)
|
|
|
|