internal static bool TryCreate(FileDescriptor file, out FileModificationDescriptor modification) { try { modification = new FileModificationDescriptor(file, FileModificationMode.New); return true; } catch (Exception e) { modification = null; return false; } }
private void AddModification(BitTunnelServerProtocol protocol, FileModificationDescriptor modification) { if (InvokeRequired) { Invoke((MethodInvoker)delegate { AddModification(protocol, modification); }); } else { FileDescriptor descriptor = modification.ToFileDescriptor(); ListViewItem item = GetListViewItem(descriptor.Hash); string client = ""; if (item == null) { item = new ListViewItem(new string[]{ descriptor.FileName, "", string.Format("{0} kb", Math.Round((double)descriptor.Size / 1024, 2)), modification.Hash }); item.Tag = new List<FileDescriptor>(); _availableFilesView.Items.Add(item); client = protocol.ClientDetails.PublicName; item.ImageIndex = 0; } (item.Tag as List<FileDescriptor>).Add(descriptor); SetClientText(item); } }
public void WhenFileModificationDescriptorIsCreatedForNonExistingFile_NoHashGenerated_ExistsPropertyShouldBeFalse() { FileDescriptor descriptor = FileDescriptor.Create(@"C:\NothingToSeeHere.txt", false); FileModificationDescriptor modification = new FileModificationDescriptor(descriptor, FileModificationMode.New); Assert.IsNull(descriptor.Hash); }
public void WhenFileModificationDescriptorIsCreatedForNonExistingFile_FileHashShouldBeNull() { FileDescriptor descriptor = FileDescriptor.Create(@"C:\NothingToSeeHere.txt", true); FileModificationDescriptor modification = new FileModificationDescriptor(descriptor, FileModificationMode.Remove); Assert.IsNull(modification.Hash); }
public void WhenFileModificationDescriptorIsCreatedForExistingFile_FileDescriptorParameter_ExistsPropertyShouldNotBeFalse() { FileDescriptor descriptor = FileDescriptor.Create(_existingFile1.FullName, true); FileModificationDescriptor modification = new FileModificationDescriptor(descriptor, FileModificationMode.New); Assert.IsNotNull(descriptor.Hash); }
public void WhenFileModificationDescriptorIsCreatedForExistingFile_FileDescriptorParameterWithoutHash_FileHashShouldBeNull() { FileDescriptor descriptor = FileDescriptor.Create(_existingFile3.FullName, false); FileModificationDescriptor modification = new FileModificationDescriptor(descriptor, FileModificationMode.New); Assert.IsNull(descriptor.Hash); }
public FileModificationCancelEventArgs(FileModificationDescriptor file) { File = file; }
private void SetupFileCancelArgs(FileModificationDescriptor file) { //Assume it has been newed up in ctor _fileCancelArgs.File = file; _fileCancelArgs.Cancel = false; }
private void ReplaceFile(FileModificationDescriptor modification) { RemoveFile(modification); AddNewFile(modification); }
private void RemoveFile(FileModificationDescriptor file) { if (IgnoreEmptyHashedFile(file)) return; if (FileRemoving != null) { SetupFileCancelArgs(file); FileRemoving(this, _fileCancelArgs); if (_fileCancelArgs.Cancel) return; } if (!_files.ContainsKey(file.Hash)) return; if (_uniqueHash) { _files.Remove(file.Hash); } else { _files[file.Hash].RemoveAll(f => f.Hash == file.Hash); if (_files[file.Hash].Count == 0) { _files.Remove(file.Hash); } } }
private bool IgnoreEmptyHashedFile(FileModificationDescriptor file) { if (string.IsNullOrEmpty(file.Hash)) { if (FileIgnored != null) { FileListModificationEventArgs args = new FileListModificationEventArgs(new FileModificationDescriptor[] { file }); FileIgnored(this, args); } return true; } return false; }
private void AddNewFile(FileModificationDescriptor file) { if (IgnoreEmptyHashedFile(file)) return; if (_uniqueHash) { if (CountOf(file.Hash) > 0) return; } else { //if it is identical location, don't store same file twice if (_files.ContainsKey(file.Hash) && _files[file.Hash].Count(f => f.FileFullName == file.FileFullName) > 0) { return; } } if (FileAdding != null) { SetupFileCancelArgs(file); FileAdding(this, _fileCancelArgs); if (_fileCancelArgs.Cancel) return; } if (!_files.ContainsKey(file.Hash)) { _files[file.Hash] = new List<FileDescriptor>(); } _files[file.Hash].Add(file.ToFileDescriptor()); }
private void RemoveModification(BitTunnelServerProtocol protocol, FileModificationDescriptor modification) { if (InvokeRequired) { Invoke((MethodInvoker)delegate { RemoveModification(protocol, modification); }); } else { FileDescriptor file = modification.ToFileDescriptor(); ListViewItem item = GetListViewItem(file.Hash); List<FileDescriptor> files = item.Tag as List<FileDescriptor>; if (files == null) throw new InvalidOperationException("Tag on available server file not List of File Descriptors"); files.Remove(file); if (files.Count == 0) { _availableFilesView.Items.Remove(item); } else { item.Tag = files; SetClientText(item); } } }