From 983b51e0830ece26c1bd8445359fda14f0f99925 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 4 Oct 2017 14:51:26 -0400 Subject: [PATCH] reduce socket activity --- Emby.Dlna/Eventing/EventManager.cs | 20 +++++++++++++----- Emby.Dlna/Service/BaseService.cs | 4 ++-- .../IO/ManagedFileSystem.cs | 21 +++++++++++++++++++ .../Updates/InstallationManager.cs | 5 ----- MediaBrowser.Api/Dlna/DlnaServerService.cs | 2 +- MediaBrowser.Api/MediaBrowser.Api.csproj | 1 - .../ScheduledTasksWebSocketListener.cs | 1 + .../System/ActivityLogWebSocketListener.cs | 1 + MediaBrowser.Api/UserLibrary/ItemsService.cs | 4 +++- MediaBrowser.Controller/Dlna/IEventManager.cs | 2 +- .../MediaBrowser.Controller.csproj | 1 + .../Net}/BasePeriodicWebSocketListener.cs | 5 ++--- .../Api/PackageCreator.cs | 2 +- 13 files changed, 49 insertions(+), 20 deletions(-) rename {MediaBrowser.Api => MediaBrowser.Controller/Net}/BasePeriodicWebSocketListener.cs (99%) diff --git a/Emby.Dlna/Eventing/EventManager.cs b/Emby.Dlna/Eventing/EventManager.cs index 0516585ae..99ba74f32 100644 --- a/Emby.Dlna/Eventing/EventManager.cs +++ b/Emby.Dlna/Eventing/EventManager.cs @@ -26,9 +26,11 @@ namespace Emby.Dlna.Eventing _logger = logger; } - public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string requestedTimeoutString) + public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl) { - var subscription = GetSubscription(subscriptionId, true); + var subscription = GetSubscription(subscriptionId, false); + + int timeoutSeconds; // Remove logging for now because some devices are sending this very frequently // TODO re-enable with dlna debug logging setting @@ -37,10 +39,18 @@ namespace Emby.Dlna.Eventing // timeout, // subscription.CallbackUrl); - subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300; - subscription.SubscriptionTime = DateTime.UtcNow; + if (subscription != null) + { + subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300; + timeoutSeconds = subscription.TimeoutSeconds; + subscription.SubscriptionTime = DateTime.UtcNow; + } + else + { + timeoutSeconds = 300; + } - return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, subscription.TimeoutSeconds); + return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, timeoutSeconds); } public EventSubscriptionResponse CreateEventSubscription(string notificationType, string requestedTimeoutString, string callbackUrl) diff --git a/Emby.Dlna/Service/BaseService.cs b/Emby.Dlna/Service/BaseService.cs index ddc37da09..bc7f01d97 100644 --- a/Emby.Dlna/Service/BaseService.cs +++ b/Emby.Dlna/Service/BaseService.cs @@ -24,9 +24,9 @@ namespace Emby.Dlna.Service return EventManager.CancelEventSubscription(subscriptionId); } - public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string timeoutString) + public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string timeoutString, string callbackUrl) { - return EventManager.RenewEventSubscription(subscriptionId, timeoutString); + return EventManager.RenewEventSubscription(subscriptionId, notificationType, timeoutString, callbackUrl); } public EventSubscriptionResponse CreateEventSubscription(string notificationType, string timeoutString, string callbackUrl) diff --git a/Emby.Server.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs index 0d85a977c..125d9e980 100644 --- a/Emby.Server.Implementations/IO/ManagedFileSystem.cs +++ b/Emby.Server.Implementations/IO/ManagedFileSystem.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -24,12 +25,14 @@ namespace Emby.Server.Implementations.IO private string _tempPath; private SharpCifsFileSystem _sharpCifsFileSystem; + private IEnvironmentInfo _environmentInfo; public ManagedFileSystem(ILogger logger, IEnvironmentInfo environmentInfo, string tempPath) { Logger = logger; _supportsAsyncFileStreams = true; _tempPath = tempPath; + _environmentInfo = environmentInfo; // On Linux, this needs to be true or symbolic links are ignored EnableFileSystemRequestConcat = environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows && @@ -1051,7 +1054,25 @@ namespace Emby.Server.Implementations.IO public virtual void SetExecutable(string path) { + if (_environmentInfo.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.OSX) + { + RunProcess("chmod", "+x \"" + path + "\"", GetDirectoryName(path)); + } + } + private void RunProcess(string path, string args, string workingDirectory) + { + using (var process = Process.Start(new ProcessStartInfo + { + Arguments = args, + FileName = path, + CreateNoWindow = true, + WorkingDirectory = workingDirectory, + WindowStyle = ProcessWindowStyle.Normal + })) + { + process.WaitForExit(); + } } } } diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs index 180463040..772f2338a 100644 --- a/Emby.Server.Implementations/Updates/InstallationManager.cs +++ b/Emby.Server.Implementations/Updates/InstallationManager.cs @@ -442,11 +442,6 @@ namespace Emby.Server.Implementations.Updates /// Task{IEnumerable{PackageVersionInfo}}. public async Task> GetAvailablePluginUpdates(Version applicationVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken) { - if (!_config.CommonConfiguration.EnableAutoUpdate) - { - return new PackageVersionInfo[] { }; - } - var catalog = await GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false); var systemUpdateLevel = GetSystemUpdateLevel(); diff --git a/MediaBrowser.Api/Dlna/DlnaServerService.cs b/MediaBrowser.Api/Dlna/DlnaServerService.cs index cbef6e5b3..6a0cea4df 100644 --- a/MediaBrowser.Api/Dlna/DlnaServerService.cs +++ b/MediaBrowser.Api/Dlna/DlnaServerService.cs @@ -246,7 +246,7 @@ namespace MediaBrowser.Api.Dlna if (string.IsNullOrEmpty(notificationType)) { - return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, timeoutString)); + return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, notificationType, timeoutString, callback)); } return GetSubscriptionResponse(eventManager.CreateEventSubscription(notificationType, timeoutString, callback)); diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index ddb187f3d..650306ea6 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -40,7 +40,6 @@ Properties\SharedVersion.cs - diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs index ee74ec450..69ce6a385 100644 --- a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs +++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs @@ -4,6 +4,7 @@ using MediaBrowser.Model.Tasks; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.Threading; namespace MediaBrowser.Api.ScheduledTasks diff --git a/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs b/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs index c641695dd..793f74571 100644 --- a/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs +++ b/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs @@ -3,6 +3,7 @@ using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using System.Collections.Generic; using System.Threading.Tasks; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.Threading; namespace MediaBrowser.Api.System diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 5fe386f1a..1e531ba66 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -117,7 +117,9 @@ namespace MediaBrowser.Api.UserLibrary IsVirtualItem = false, CollapseBoxSetItems = false, EnableTotalRecordCount = request.EnableTotalRecordCount, - AncestorIds = ancestorIds.ToArray() + AncestorIds = ancestorIds.ToArray(), + IncludeItemTypes = request.GetIncludeItemTypes(), + ExcludeItemTypes = request.GetExcludeItemTypes() }); var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, options, user); diff --git a/MediaBrowser.Controller/Dlna/IEventManager.cs b/MediaBrowser.Controller/Dlna/IEventManager.cs index 8c91bd889..3af357a17 100644 --- a/MediaBrowser.Controller/Dlna/IEventManager.cs +++ b/MediaBrowser.Controller/Dlna/IEventManager.cs @@ -12,7 +12,7 @@ namespace MediaBrowser.Controller.Dlna /// /// Renews the event subscription. /// - EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string requestedTimeoutString); + EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl); /// /// Creates the event subscription. diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index b33993859..960ff0aa7 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -176,6 +176,7 @@ + diff --git a/MediaBrowser.Api/BasePeriodicWebSocketListener.cs b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs similarity index 99% rename from MediaBrowser.Api/BasePeriodicWebSocketListener.cs rename to MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs index c7a9d97ba..6be94e7e6 100644 --- a/MediaBrowser.Api/BasePeriodicWebSocketListener.cs +++ b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs @@ -4,12 +4,11 @@ using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Controller.Net; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; using MediaBrowser.Model.Threading; -namespace MediaBrowser.Api +namespace MediaBrowser.Controller.Net { /// /// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received @@ -93,7 +92,7 @@ namespace MediaBrowser.Api { get { - return true; + return false; } } diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index c855a8d9b..bb4a98fa8 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -265,7 +265,7 @@ namespace MediaBrowser.WebDashboard.Api builder.AppendFormat("window.appMode='{0}';", mode); } - if (string.IsNullOrWhiteSpace(mode)) + else { builder.AppendFormat("window.dashboardVersion='{0}';", version); }