BitArray GetClientNAKState(ClientHost host, TarballStreamReader tarball) { Console.WriteLine("Receiving {0} files to '{1}':", tarball.Files.Count, downloadDirectory.FullName); foreach (var fi in tarball.Files) { Console.WriteLine("{0,15} {1}", fi.Length.ToString("##,#"), fi.RelativePath); } Console.WriteLine(); Console.WriteLine("{0,15} chunks @ {1,13} bytes/chunk", host.NumChunks.ToString("##,0"), host.ChunkSize.ToString("##,0")); this.numChunks = host.NumChunks; int numChunkBytes = host.NumBytes; nakBuf = new byte[numChunkBytes]; for (int i = 0; i < numChunkBytes; ++i) { nakBuf[i] = 0xFF; } if (!testMode) { localStateFile.Refresh(); if (localStateFile.Exists) { if (localStateStream != null) { localStateStream.Close(); } localStateStream = localStateFile.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.Read); if (localStateStream.Length != numChunkBytes) { localStateStream.Close(); Console.Error.WriteLine("Inconsistent state file. Overwriting with new state."); localStateFile.Delete(); localStateFile.Refresh(); } else { // Read the NAK state: localStateStream.Seek(0L, SeekOrigin.Begin); localStateStream.Read(nakBuf, 0, numChunkBytes); } } localStateFile.Refresh(); if (!localStateFile.Exists) { // Create a new file and allocate enough space for storing a NAK bit array: localStateStream = localStateFile.Open(FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read); localStateStream.SetLength(numChunkBytes); localStateStream.Seek(0L, SeekOrigin.Begin); localStateStream.Write(nakBuf, 0, numChunkBytes); } } return(new BitArray(nakBuf).Clone() as BitArray); }
BitArray GetClientNAKState(ClientHost host, TarballStreamReader tarball) { // TODO: Copy over code from LCC to maintain resumable download state. return(new BitArray(host.NumBytes).Not()); }
BitArray GetClientNAKState(ClientHost host, TarballStreamReader tarball) { // TODO: Copy over code from LCC to maintain resumable download state. return new BitArray(host.NumBytes).Not(); }
BitArray GetClientNAKState(ClientHost host, TarballStreamReader tarball) { Console.WriteLine("Receiving {0} files to '{1}':", tarball.Files.Count, downloadDirectory.FullName); foreach (var fi in tarball.Files) { Console.WriteLine("{0,15} {1}", fi.Length.ToString("##,#"), fi.RelativePath); } Console.WriteLine(); Console.WriteLine("{0,15} chunks @ {1,13} bytes/chunk", host.NumChunks.ToString("##,0"), host.ChunkSize.ToString("##,0")); this.numChunks = host.NumChunks; int numChunkBytes = host.NumBytes; nakBuf = new byte[numChunkBytes]; for (int i = 0; i < numChunkBytes; ++i) nakBuf[i] = 0xFF; if (!testMode) { localStateFile.Refresh(); if (localStateFile.Exists) { if (localStateStream != null) { localStateStream.Close(); } localStateStream = localStateFile.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.Read); if (localStateStream.Length != numChunkBytes) { localStateStream.Close(); Console.Error.WriteLine("Inconsistent state file. Overwriting with new state."); localStateFile.Delete(); localStateFile.Refresh(); } else { // Read the NAK state: localStateStream.Seek(0L, SeekOrigin.Begin); localStateStream.Read(nakBuf, 0, numChunkBytes); } } localStateFile.Refresh(); if (!localStateFile.Exists) { // Create a new file and allocate enough space for storing a NAK bit array: localStateStream = localStateFile.Open(FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read); localStateStream.SetLength(numChunkBytes); localStateStream.Seek(0L, SeekOrigin.Begin); localStateStream.Write(nakBuf, 0, numChunkBytes); } } return new BitArray(nakBuf).Clone() as BitArray; }