diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-27 03:19:09 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-27 03:19:09 -0400 |
| commit | ffb68b03184e98126cfa211de9f422c1b255b9e4 (patch) | |
| tree | fe334e505eb7d32307f19fea60fc6049223828f5 | |
| parent | 89ba154522ed12f7ba64cc8190843f20795c728e (diff) | |
update realtime monitor
8 files changed, 50 insertions, 32 deletions
diff --git a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs index a51ea5726..094bddfda 100644 --- a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs +++ b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs @@ -87,8 +87,9 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp private void ProcessContext(HttpListenerContext context) { - //Task.Factory.StartNew(() => InitTask(context), TaskCreationOptions.DenyChildAttach | TaskCreationOptions.PreferFairness); - Task.Run(() => InitTask(context, _disposeCancellationToken)); + _logger.Info("thread id {0}", Thread.CurrentThread.ManagedThreadId); + InitTask(context, _disposeCancellationToken); + //Task.Run(() => InitTask(context, _disposeCancellationToken)); } private Task InitTask(HttpListenerContext context, CancellationToken cancellationToken) diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs index 7b9083f00..9606b60b8 100644 --- a/Emby.Server.Implementations/IO/FileRefresher.cs +++ b/Emby.Server.Implementations/IO/FileRefresher.cs @@ -180,7 +180,7 @@ namespace Emby.Server.Implementations.IO try { - await item.ChangedExternally().ConfigureAwait(false); + item.ChangedExternally(); } catch (IOException ex) { @@ -282,11 +282,11 @@ namespace Emby.Server.Implementations.IO return false; } } - //catch (DirectoryNotFoundException) - //{ - // // File may have been deleted - // return false; - //} + catch (DirectoryNotFoundException) + { + // File may have been deleted + return false; + } catch (FileNotFoundException) { // File may have been deleted diff --git a/Emby.Server.Implementations/Session/HttpSessionController.cs b/Emby.Server.Implementations/Session/HttpSessionController.cs index 2acc3902f..92fa6c424 100644 --- a/Emby.Server.Implementations/Session/HttpSessionController.cs +++ b/Emby.Server.Implementations/Session/HttpSessionController.cs @@ -66,19 +66,19 @@ namespace Emby.Server.Implementations.Session return SendMessage(name, new Dictionary<string, string>(), cancellationToken); } - private async Task SendMessage(string name, + private Task SendMessage(string name, Dictionary<string, string> args, CancellationToken cancellationToken) { var url = PostUrl + "/" + name + ToQueryString(args); - await _httpClient.Post(new HttpRequestOptions + return _httpClient.Post(new HttpRequestOptions { Url = url, CancellationToken = cancellationToken, BufferContent = false - }).ConfigureAwait(false); + }); } public Task SendSessionEndedNotification(SessionInfoDto sessionInfo, CancellationToken cancellationToken) @@ -159,8 +159,24 @@ namespace Emby.Server.Implementations.Session public Task SendMessage<T>(string name, T data, CancellationToken cancellationToken) { - // Not supported or needed right now - return Task.FromResult(true); + var url = PostUrl + "/" + name; + + var options = new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + BufferContent = false + }; + + options.RequestContent = _json.SerializeToString(data); + options.RequestContentType = "application/json"; + + return _httpClient.Post(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + BufferContent = false + }); } private string ToQueryString(Dictionary<string, string> nvc) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a46ac9135..603e59338 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1854,10 +1854,13 @@ namespace MediaBrowser.Controller.Entities /// Do whatever refreshing is necessary when the filesystem pertaining to this item has changed. /// </summary> /// <returns>Task.</returns> - public virtual Task ChangedExternally() + public virtual void ChangedExternally() { - ProviderManager.QueueRefresh(Id, new MetadataRefreshOptions(FileSystem), RefreshPriority.High); - return Task.FromResult(true); + ProviderManager.QueueRefresh(Id, new MetadataRefreshOptions(FileSystem) + { + ValidateChildren = true, + + }, RefreshPriority.High); } /// <summary> diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 28856b753..7566911a1 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1326,19 +1326,6 @@ namespace MediaBrowser.Controller.Entities } /// <summary> - /// Folders need to validate and refresh - /// </summary> - /// <returns>Task.</returns> - public override async Task ChangedExternally() - { - var progress = new Progress<double>(); - - await ValidateChildren(progress, CancellationToken.None).ConfigureAwait(false); - - await base.ChangedExternally().ConfigureAwait(false); - } - - /// <summary> /// Marks the played. /// </summary> /// <param name="user">The user.</param> diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs index ed1e4325d..86cef628e 100644 --- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs +++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs @@ -15,6 +15,7 @@ namespace MediaBrowser.Controller.Providers public bool ReplaceAllMetadata { get; set; } public bool IsPostRecursiveRefresh { get; set; } + public bool ValidateChildren { get; set; } public MetadataRefreshMode MetadataRefreshMode { get; set; } public RemoteSearchResult SearchResult { get; set; } diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index f80b99c7a..16dfd8945 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -872,7 +872,7 @@ namespace MediaBrowser.Providers.Manager if (!_isProcessingRefreshQueue) { _isProcessingRefreshQueue = true; - Task.Run(() => StartProcessingRefreshQueue()); + Task.Run(StartProcessingRefreshQueue); } } } @@ -897,6 +897,15 @@ namespace MediaBrowser.Providers.Manager // Try to throttle this a little bit. await Task.Delay(100).ConfigureAwait(false); + if (refreshItem.Item2.ValidateChildren) + { + var folder = item as Folder; + if (folder != null) + { + await folder.ValidateChildren(new Progress<double>(), CancellationToken.None).ConfigureAwait(false); + } + } + var artist = item as MusicArtist; var task = artist == null ? RefreshItem(item, refreshItem.Item2, CancellationToken.None) diff --git a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs index b4c6aa02c..f7cd9dd13 100644 --- a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs +++ b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs @@ -163,7 +163,7 @@ namespace MediaBrowser.Providers.Subtitles Provider = provider.Name }, _logger); - + throw; } } @@ -256,7 +256,8 @@ namespace MediaBrowser.Providers.Subtitles _monitor.ReportFileSystemChangeComplete(path, false); } - return _libraryManager.GetItemById(itemId).ChangedExternally(); + _libraryManager.GetItemById(itemId).ChangedExternally(); + return Task.FromResult(true); } public Task<SubtitleResponse> GetRemoteSubtitles(string id, CancellationToken cancellationToken) |
