Example #1
0
        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();
        }