void AddFile(WorkspaceDirectoryInfo NewWorkspaceDir, StreamFileInfo StreamFile) { // Create a new file for this workspace WorkspaceFileInfo WorkspaceFile = new WorkspaceFileInfo(NewWorkspaceDir, StreamFile.Name, StreamFile.ContentId); NewWorkspaceDir.NameToFile.Add(StreamFile.Name, WorkspaceFile); // Try to add it to the cache TrackedFileInfo TrackedFile; if (ContentIdToTrackedFile.TryGetValue(StreamFile.ContentId, out TrackedFile)) { if (FilesToMove.TryAdd(TrackedFile, new WorkspaceFileToMove(StreamFile, TrackedFile, WorkspaceFile))) { WorkspaceFile.SetMetadata(TrackedFile.Length, TrackedFile.LastModifiedTicks, TrackedFile.bReadOnly); } else { FilesToCopy.Add(new WorkspaceFileToCopy(StreamFile, FilesToMove[TrackedFile].WorkspaceFile, WorkspaceFile)); } } else { WorkspaceFileInfo SourceWorkspaceFile; if (ContentIdToWorkspaceFile.TryGetValue(StreamFile.ContentId, out SourceWorkspaceFile)) { FilesToCopy.Add(new WorkspaceFileToCopy(StreamFile, SourceWorkspaceFile, WorkspaceFile)); } else { FilesToSync.Add(new WorkspaceFileToSync(StreamFile, WorkspaceFile)); } } }
/// <summary> /// Constructor for reading from disk /// </summary> /// <param name="Reader">Reader to read data from</param> /// <param name="ParentDirectory">The parent directory to initialize this directory with</param> public StreamDirectoryInfo(BinaryReader Reader, StreamDirectoryInfo ParentDirectory) { this.Name = Reader.ReadString(); this.ParentDirectory = ParentDirectory; int NumFiles = Reader.ReadInt32(); for (int Idx = 0; Idx < NumFiles; Idx++) { StreamFileInfo File = new StreamFileInfo(Reader, this); NameToFile.Add(File.Name, File); } int NumDirectories = Reader.ReadInt32(); for (int Idx = 0; Idx < NumDirectories; Idx++) { StreamDirectoryInfo SubDirectory = new StreamDirectoryInfo(Reader, this); NameToSubDirectory.Add(SubDirectory.Name, SubDirectory); } }
public WorkspaceFileToSync(StreamFileInfo StreamFile, WorkspaceFileInfo WorkspaceFile) { this.StreamFile = StreamFile; this.WorkspaceFile = WorkspaceFile; }
public WorkspaceFileToCopy(StreamFileInfo StreamFile, WorkspaceFileInfo SourceWorkspaceFile, WorkspaceFileInfo TargetWorkspaceFile) { this.StreamFile = StreamFile; this.SourceWorkspaceFile = SourceWorkspaceFile; this.TargetWorkspaceFile = TargetWorkspaceFile; }
public WorkspaceFileToMove(StreamFileInfo StreamFile, TrackedFileInfo TrackedFile, WorkspaceFileInfo WorkspaceFile) { this.StreamFile = StreamFile; this.TrackedFile = TrackedFile; this.WorkspaceFile = WorkspaceFile; }