コード例 #1
0
ファイル: FileSystem.cs プロジェクト: Fedorm/core-master
        void UploadPrivateCallback()
        {
            ReadSentItems();

            var local = new FileSystemProvider(_context.LocalStorage, Provider.PrivateDirectory);
            IRemoteProvider remote = CreateRemote(Provider.PrivateDirectory);

            // push
            var localItems = new List<Item>(local.Items);
            foreach (Item l in localItems)
            {
                if (!_sentItems.Contains(l.RelativePath))
                {
                    if (!remote.FileExists(l.RelativePath) 
                        || remote.FindFile(l.RelativePath).Time < l.Time 
                        || remote.FindFile(l.RelativePath).Size < l.Size) // для поддержки докачки
                    {
                        using (Stream stream = local.GetStream(l.RelativePath))
                            remote.SaveFile(l.RelativePath, stream);

                        _sentItems.Add(l.RelativePath);
                    }
                }
            }

            WriteSentItems();
        }
コード例 #2
0
ファイル: FileSystem.cs プロジェクト: Fedorm/core-master
        void SyncSharedCallback()
        {
            var local = new FileSystemProvider(_context.LocalStorage, Provider.SharedDirectory);
            IRemoteProvider remote = CreateRemote(Provider.SharedDirectory);

            // download
            var remoteItems = new List<Item>(remote.Items);
            foreach (Item r in remoteItems)
                if (!local.FileExists(r.RelativePath) || local.FindFile(r.RelativePath).Time < r.Time)
                {
                    Item item = r;
                    remote.LoadFile(r.RelativePath, stream => local.SaveFile(item.RelativePath, stream));
                }

            // remove deleted
            var localItems = new List<Item>(local.Items);
            foreach (Item l in localItems)
            {
                if (!remote.Items.Exists(val => val.RelativePath == l.RelativePath))
                    local.DeleteFile(l.RelativePath);
            }
        }