public override void SaveItemChange(SaveChangeAction saveChangeAction, ItemChange change, SaveChangeContext context) { // Extract the data from the change TransferMechanism data = context.ChangeData as TransferMechanism; // Now apply the change if (!(saveChangeAction == SaveChangeAction.UpdateVersionOnly) && ((change.ChangeKind & ChangeKind.Deleted) == 0)) { ItemMetadata item = new ItemMetadata(); item.ItemId = change.ItemId; item.ChangeVersion = change.ChangeVersion; item.CreationVersion = change.CreationVersion; item.Uri = data.Uri; RemoteFileInfo fileInfo = new RemoteFileInfo(); fileInfo.FolderPath = Path; fileInfo.Length = data.DataStream.Length; fileInfo.Metadata = item; fileInfo.FileByteStream = data.DataStream; Proxy.UploadFile(fileInfo); // Close input stream data.DataStream.Close(); } else { Proxy.DeleteFile(Path, change.ItemId, _filters); } // If we made it here, the change was successfully applied locally // (or it is a version only change), so we can update our knowledge with the // learned knowledge from the change context.GetUpdatedDestinationKnowledge(out _syncKnowledge, out _forgottenKnowledge); }
public void GetUpdatedKnowledge(SaveChangeContext context) { context.GetUpdatedDestinationKnowledge(out myKnowledge, out myForgottenKnowledge); }
public void SaveItemChange(SaveChangeAction saveChangeAction, ItemChange change, SaveChangeContext context) { DataTransfer data = context.ChangeData as DataTransfer; switch (saveChangeAction) { case SaveChangeAction.Create: { ItemMetadata item = new ItemMetadata(); item.ItemId = change.ItemId; item.ChangeVersion = change.ChangeVersion; item.CreationVersion = change.CreationVersion; item.Uri = data.Uri; data.DataStream.Position = 0; System.Diagnostics.Debug.WriteLine("Uploading File:" + item.Uri); service.UploadFile(data.DataStream.Length, item, data.DataStream); data.DataStream.Close(); sync.UpdateItemItem(item); break; } case SaveChangeAction.DeleteAndStoreTombstone: { ItemMetadata item = sync.GetItemMetaData(saveChangeAction, change, data); sync.DeleteItem(change.ItemId); service.DeleteFile(change.ItemId, item.Uri); break; } default: { throw new NotImplementedException(saveChangeAction + " ChangeAction is not implemented!"); } } context.GetUpdatedDestinationKnowledge(out myKnowledge, out myForgottenKnowledge); }
public void GetUpdatedKnowledge(SaveChangeContext context) { context.GetUpdatedDestinationKnowledge(out _syncKnowledge, out _forgottenKnowledge); }