diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-10 14:10:38 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-10 14:10:38 -0400 |
| commit | 401c962c7f22d230d42ee8aca8685f3f3d7b3ac1 (patch) | |
| tree | b083c5008c2fadd9ad27c3bb5134e82cabddf8da /MediaBrowser.Server.Implementations/Sync | |
| parent | af90f0a0597c8b11337929c1cbf9a5549d942f04 (diff) | |
update server sync
Diffstat (limited to 'MediaBrowser.Server.Implementations/Sync')
3 files changed, 20 insertions, 24 deletions
diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index ff298a999..8391dbd7a 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -143,7 +143,7 @@ namespace MediaBrowser.Server.Implementations.Sync var fileTransferProgress = new ActionableProgress<double>(); fileTransferProgress.RegisterAction(pct => progress.Report(pct * .92)); - var localItem = CreateLocalItem(provider, jobItem.SyncJobId, target, libraryItem, serverId, jobItem.OriginalFileName); + var localItem = CreateLocalItem(provider, jobItem.SyncJobId, jobItem.SyncJobItemId, target, libraryItem, serverId, jobItem.OriginalFileName); await _syncManager.ReportSyncJobItemTransferBeginning(internalSyncJobItem.Id); @@ -188,22 +188,19 @@ namespace MediaBrowser.Server.Implementations.Sync SyncTarget target, CancellationToken cancellationToken) { - var localId = GetLocalId(serverId, itemId); - var localItem = await dataProvider.Get(target, localId); + var localItems = await dataProvider.GetCachedItems(target, serverId, itemId); - if (localItem == null) + foreach (var localItem in localItems) { - return; - } + var files = await GetFiles(provider, localItem, target); - var files = await GetFiles(provider, localItem, target); + foreach (var file in files) + { + await provider.DeleteFile(file.Path, target, cancellationToken).ConfigureAwait(false); + } - foreach (var file in files) - { - await provider.DeleteFile(file.Path, target, cancellationToken).ConfigureAwait(false); + await dataProvider.Delete(target, localItem.Id).ConfigureAwait(false); } - - await dataProvider.Delete(target, localId).ConfigureAwait(false); } private async Task SendFile(IServerSyncProvider provider, string inputPath, LocalItem item, SyncTarget target, CancellationToken cancellationToken) @@ -214,9 +211,9 @@ namespace MediaBrowser.Server.Implementations.Sync } } - internal static string GetLocalId(string serverId, string itemId) + private static string GetLocalId(string jobItemId, string itemId) { - var bytes = Encoding.UTF8.GetBytes(serverId + itemId); + var bytes = Encoding.UTF8.GetBytes(jobItemId + itemId); bytes = CreateMd5(bytes); return BitConverter.ToString(bytes, 0, bytes.Length).Replace("-", string.Empty); } @@ -229,7 +226,7 @@ namespace MediaBrowser.Server.Implementations.Sync } } - public LocalItem CreateLocalItem(IServerSyncProvider provider, string syncJobId, SyncTarget target, BaseItemDto libraryItem, string serverId, string originalFileName) + public LocalItem CreateLocalItem(IServerSyncProvider provider, string syncJobId, string syncJobItemId, SyncTarget target, BaseItemDto libraryItem, string serverId, string originalFileName) { var path = GetDirectoryPath(provider, syncJobId, libraryItem, serverId); path.Add(GetLocalFileName(provider, libraryItem, originalFileName)); @@ -248,7 +245,7 @@ namespace MediaBrowser.Server.Implementations.Sync ItemId = libraryItem.Id, ServerId = serverId, LocalPath = localPath, - Id = GetLocalId(serverId, libraryItem.Id) + Id = GetLocalId(syncJobItemId, libraryItem.Id) }; } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs index 91e7a2537..3e0df94f5 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs @@ -40,6 +40,8 @@ namespace MediaBrowser.Server.Implementations.Sync .SelectMany(i => i.GetAllSyncTargets().Select(t => new Tuple<IServerSyncProvider, SyncTarget>(i, t))) .ToList(); + var serverId = _appHost.SystemId; + foreach (var jobItem in jobItemResult.Items) { var targetTuple = targets.FirstOrDefault(i => string.Equals(i.Item2.Id, jobItem.TargetId, StringComparison.OrdinalIgnoreCase)); @@ -49,14 +51,10 @@ namespace MediaBrowser.Server.Implementations.Sync var syncTarget = targetTuple.Item2; var dataProvider = _syncManager.GetDataProvider(targetTuple.Item1, syncTarget); - var localItemId = MediaSync.GetLocalId(_appHost.SystemId, item.Id.ToString("N")); - var localItem = await dataProvider.GetCachedItem(syncTarget, localItemId).ConfigureAwait(false); + var localItems = await dataProvider.GetCachedItems(syncTarget, serverId, item.Id.ToString("N")).ConfigureAwait(false); - if (localItem != null) - { - list.AddRange(localItem.Item.MediaSources); - } + list.AddRange(localItems.SelectMany(i => i.Item.MediaSources)); } } } diff --git a/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs b/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs index d068a9e4a..ca9d96c12 100644 --- a/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs @@ -232,11 +232,12 @@ namespace MediaBrowser.Server.Implementations.Sync .ToList(); } - public async Task<LocalItem> GetCachedItem(SyncTarget target, string id) + public async Task<List<LocalItem>> GetCachedItems(SyncTarget target, string serverId, string itemId) { var items = await GetCachedData().ConfigureAwait(false); - return items.FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase)); + return items.Where(i => string.Equals(i.ServerId, serverId, StringComparison.OrdinalIgnoreCase) && string.Equals(i.ItemId, itemId, StringComparison.OrdinalIgnoreCase)) + .ToList(); } } } |
