X-Git-Url: https://code.grnet.gr/git/pithos-ms-client/blobdiff_plain/f3d080df476f28bb731d09efce2e1538b1fbb420..e81dd1f6fd93a8c094dff04db580385029fc8ee4:/trunk/Pithos.Core/Agents/WorkflowAgent.cs diff --git a/trunk/Pithos.Core/Agents/WorkflowAgent.cs b/trunk/Pithos.Core/Agents/WorkflowAgent.cs index 81a52f5..1112076 100644 --- a/trunk/Pithos.Core/Agents/WorkflowAgent.cs +++ b/trunk/Pithos.Core/Agents/WorkflowAgent.cs @@ -44,6 +44,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using Castle.ActiveRecord; using Pithos.Interfaces; using Pithos.Network; using log4net; @@ -56,10 +57,10 @@ namespace Pithos.Core.Agents Agent _agent; public IStatusNotification StatusNotification { get; set; } - [Import] + [System.ComponentModel.Composition.Import] public IStatusKeeper StatusKeeper { get; set; } - [Import] + [System.ComponentModel.Composition.Import] public NetworkAgent NetworkAgent { get; set; } private static readonly ILog Log = LogManager.GetLogger("WorkflowAgent"); @@ -114,26 +115,35 @@ namespace Pithos.Core.Agents return CompletedTask.Default; } - var fileState = FileState.FindByFilePath(path); - - - switch (state.Status) + using (new SessionScope(FlushAction.Never)) { - case FileStatus.Created: - case FileStatus.Modified: - NetworkAgent.Post(new CloudUploadAction(accountInfo, info, fileState, accountInfo.BlockSize, - accountInfo.BlockHash)); - break; - case FileStatus.Deleted: - NetworkAgent.Post(new CloudDeleteAction(accountInfo, info, fileState)); - break; - case FileStatus.Renamed: - FileSystemInfo oldInfo = Directory.Exists(state.OldPath) ? (FileSystemInfo)new DirectoryInfo(state.OldPath) : new FileInfo(state.OldPath); - FileSystemInfo newInfo = Directory.Exists(state.Path) ? (FileSystemInfo)new DirectoryInfo(state.Path) : new FileInfo(state.Path); - NetworkAgent.Post(new CloudMoveAction(accountInfo, CloudActionType.RenameCloud, - oldInfo, - newInfo)); - break; + + var fileState = FileState.FindByFilePath(path); + + + switch (state.Status) + { + case FileStatus.Created: + case FileStatus.Modified: + NetworkAgent.Post(new CloudUploadAction(accountInfo, info, fileState, + accountInfo.BlockSize, + accountInfo.BlockHash)); + break; + case FileStatus.Deleted: + NetworkAgent.Post(new CloudDeleteAction(accountInfo, info, fileState)); + break; + case FileStatus.Renamed: + FileSystemInfo oldInfo = Directory.Exists(state.OldPath) + ? (FileSystemInfo) new DirectoryInfo(state.OldPath) + : new FileInfo(state.OldPath); + FileSystemInfo newInfo = Directory.Exists(state.Path) + ? (FileSystemInfo) new DirectoryInfo(state.Path) + : new FileInfo(state.Path); + NetworkAgent.Post(new CloudMoveAction(accountInfo, CloudActionType.RenameCloud, + oldInfo, + newInfo)); + break; + } } return CompletedTask.Default;