Browse Source

sync updates

Luke Pulverenti 10 years ago
parent
commit
19ecd450b8

+ 12 - 0
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>

+ 7 - 2
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);
             }

+ 16 - 2
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>

+ 2 - 1
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" />

+ 81 - 0
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"; }
+        }
+    }
+}

+ 2 - 2
MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs → 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;

+ 8 - 2
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)