aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-05-27 03:19:09 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-05-27 03:19:09 -0400
commitffb68b03184e98126cfa211de9f422c1b255b9e4 (patch)
treefe334e505eb7d32307f19fea60fc6049223828f5
parent89ba154522ed12f7ba64cc8190843f20795c728e (diff)
update realtime monitor
-rw-r--r--Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs5
-rw-r--r--Emby.Server.Implementations/IO/FileRefresher.cs12
-rw-r--r--Emby.Server.Implementations/Session/HttpSessionController.cs26
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs9
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs13
-rw-r--r--MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs1
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs11
-rw-r--r--MediaBrowser.Providers/Subtitles/SubtitleManager.cs5
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)