diff options
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Common/ScheduledTasks/ITaskManager.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj | 3 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs | 81 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sync/SyncConvertScheduledTask.cs (renamed from MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs) | 4 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sync/SyncManager.cs | 10 |
7 files changed, 128 insertions, 9 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs index a77efe855..4f84652c6 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs @@ -79,6 +79,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks QueueScheduledTask<T>(options); } + public void CancelIfRunningAndQueue<T>() + where T : IScheduledTask + { + CancelIfRunningAndQueue<T>(new TaskExecutionOptions()); + } + /// <summary> /// Cancels if running /// </summary> @@ -103,6 +109,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks QueueScheduledTask(scheduledTask, options); } + public void QueueScheduledTask<T>() + where T : IScheduledTask + { + QueueScheduledTask<T>(new TaskExecutionOptions()); + } + /// <summary> /// Queues the scheduled task. /// </summary> diff --git a/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs b/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs index e7fd12178..b49551ea9 100644 --- a/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs +++ b/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs @@ -59,6 +59,11 @@ namespace MediaBrowser.Common.Implementations.Serialization } } + private Stream OpenFile(string path) + { + return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); + } + /// <summary> /// Deserializes from file. /// </summary> @@ -78,7 +83,7 @@ namespace MediaBrowser.Common.Implementations.Serialization throw new ArgumentNullException("file"); } - using (Stream stream = File.OpenRead(file)) + using (Stream stream = OpenFile(file)) { return DeserializeFromStream(stream, type); } @@ -99,7 +104,7 @@ namespace MediaBrowser.Common.Implementations.Serialization throw new ArgumentNullException("file"); } - using (Stream stream = File.OpenRead(file)) + using (Stream stream = OpenFile(file)) { return DeserializeFromStream<T>(stream); } diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs index 9b3f18274..8d271859e 100644 --- a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs +++ b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs @@ -18,7 +18,14 @@ namespace MediaBrowser.Common.ScheduledTasks /// </summary> /// <typeparam name="T"></typeparam> /// <param name="options">Task options.</param> - void CancelIfRunningAndQueue<T>(TaskExecutionOptions options = null) + void CancelIfRunningAndQueue<T>(TaskExecutionOptions options) + where T : IScheduledTask; + + /// <summary> + /// Cancels if running and queue. + /// </summary> + /// <typeparam name="T"></typeparam> + void CancelIfRunningAndQueue<T>() where T : IScheduledTask; /// <summary> @@ -33,7 +40,14 @@ namespace MediaBrowser.Common.ScheduledTasks /// </summary> /// <typeparam name="T"></typeparam> /// <param name="options">Task options.</param> - void QueueScheduledTask<T>(TaskExecutionOptions options = null) + void QueueScheduledTask<T>(TaskExecutionOptions options) + where T : IScheduledTask; + + /// <summary> + /// Queues the scheduled task. + /// </summary> + /// <typeparam name="T"></typeparam> + void QueueScheduledTask<T>() where T : IScheduledTask; /// <summary> diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 4e2d66894..dd68ef9da 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -308,12 +308,13 @@ <Compile Include="Sync\IHasSyncProfile.cs" /> <Compile Include="Sync\MediaSync.cs" /> <Compile Include="Sync\MultiProviderSync.cs" /> + <Compile Include="Sync\ServerSyncScheduledTask.cs" /> <Compile Include="Sync\SyncRegistrationInfo.cs" /> <Compile Include="Sync\SyncConfig.cs" /> <Compile Include="Sync\SyncJobProcessor.cs" /> <Compile Include="Sync\SyncManager.cs" /> <Compile Include="Sync\SyncRepository.cs" /> - <Compile Include="Sync\SyncScheduledTask.cs" /> + <Compile Include="Sync\SyncConvertScheduledTask.cs" /> <Compile Include="Themes\AppThemeManager.cs" /> <Compile Include="TV\TVSeriesManager.cs" /> <Compile Include="Udp\UdpMessageReceivedEventArgs.cs" /> diff --git a/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs b/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs new file mode 100644 index 000000000..170860dc2 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs @@ -0,0 +1,81 @@ +using MediaBrowser.Common.IO; +using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Sync +{ + class ServerSyncScheduledTask : IScheduledTask, IConfigurableScheduledTask, IHasKey + { + private readonly ISyncManager _syncManager; + private readonly ILogger _logger; + private readonly IFileSystem _fileSystem; + private readonly IServerApplicationHost _appHost; + + public ServerSyncScheduledTask(ISyncManager syncManager, ILogger logger, IFileSystem fileSystem, IServerApplicationHost appHost) + { + _syncManager = syncManager; + _logger = logger; + _fileSystem = fileSystem; + _appHost = appHost; + } + + public string Name + { + get { return "Cloud & Folder Sync"; } + } + + public string Description + { + get { return "Sync media to the cloud"; } + } + + public string Category + { + get + { + return "Sync"; + } + } + + public Task Execute(CancellationToken cancellationToken, IProgress<double> progress) + { + return new MultiProviderSync(_syncManager, _appHost, _logger, _fileSystem) + .Sync(ServerSyncProviders, progress, cancellationToken); + } + + public IEnumerable<IServerSyncProvider> ServerSyncProviders + { + get { return ((SyncManager)_syncManager).ServerSyncProviders; } + } + + public IEnumerable<ITaskTrigger> GetDefaultTriggers() + { + return new ITaskTrigger[] + { + new IntervalTrigger { Interval = TimeSpan.FromHours(6) } + }; + } + + public bool IsHidden + { + get { return !IsEnabled; } + } + + public bool IsEnabled + { + get { return ServerSyncProviders.Any(); } + } + + public string Key + { + get { return "ServerSync"; } + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs b/MediaBrowser.Server.Implementations/Sync/SyncConvertScheduledTask.cs index ccc9508e8..70aabf345 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncConvertScheduledTask.cs @@ -13,7 +13,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Sync { - public class SyncScheduledTask : IScheduledTask, IConfigurableScheduledTask, IHasKey + public class SyncConvertScheduledTask : IScheduledTask, IConfigurableScheduledTask, IHasKey { private readonly ILibraryManager _libraryManager; private readonly ISyncRepository _syncRepo; @@ -26,7 +26,7 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly IConfigurationManager _config; private readonly IFileSystem _fileSystem; - public SyncScheduledTask(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder, ISubtitleEncoder subtitleEncoder, IConfigurationManager config, IFileSystem fileSystem) + public SyncConvertScheduledTask(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder, ISubtitleEncoder subtitleEncoder, IConfigurationManager config, IFileSystem fileSystem) { _libraryManager = libraryManager; _syncRepo = syncRepo; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 71dad53bf..5644d561a 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -79,6 +79,11 @@ namespace MediaBrowser.Server.Implementations.Sync _providers = providers.ToArray(); } + public IEnumerable<IServerSyncProvider> ServerSyncProviders + { + get { return _providers.OfType<IServerSyncProvider>(); } + } + public async Task<SyncJobCreationResult> CreateJob(SyncJobRequest request) { var processor = GetSyncJobProcessor(); @@ -438,8 +443,9 @@ namespace MediaBrowser.Server.Implementations.Sync return target.Id; } - var providerId = GetSyncProviderId(provider); - return (providerId + "-" + target.Id).GetMD5().ToString("N"); + return target.Id; + //var providerId = GetSyncProviderId(provider); + //return (providerId + "-" + target.Id).GetMD5().ToString("N"); } private string GetSyncProviderId(ISyncProvider provider) |
