예제 #1
0
        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);
        }
예제 #2
0
 public void GetUpdatedKnowledge(SaveChangeContext context)
 {
     context.GetUpdatedDestinationKnowledge(out myKnowledge, out myForgottenKnowledge);
 }
예제 #3
0
        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);
        }
예제 #4
0
 public void GetUpdatedKnowledge(SaveChangeContext context)
 {
     context.GetUpdatedDestinationKnowledge(out _syncKnowledge, out _forgottenKnowledge);
 }