public byte[] ReadLastChunkLastPartData(int chunkId, int chunkPartId) { lock (mainFileStream) { int sizeToRead = Sizes.LastChunkPartSize((uint)mainFileStream.Length); byte[] array = new byte[sizeToRead]; mainFileStream.Seek(chunkId * Sizes.ChunkSize + chunkPartId * Sizes.ChunkPartSize, SeekOrigin.Begin); mainFileStream.Read(array, 0, sizeToRead); return(array); } }
private void SendLastChunk(int requester, int chunk) { byte[] chunkData = fs.FileManager.ReadChunkData(chunk); int chunkPartsCount = Sizes.LastChunkPartsCount(fs.FileDescription.FileSize); for (int i = 0; i < chunkPartsCount - 1; i++) { SendChunkPart(requester, chunk, i, chunkData, i * Sizes.ChunkPartSize, Sizes.ChunkPartSize); } int lastChunkPartSize = Sizes.LastChunkPartSize(fs.FileDescription.FileSize); SendChunkPart( requester, chunk, chunkPartsCount - 1, chunkData, (chunkPartsCount - 1) * Sizes.ChunkPartSize, lastChunkPartSize); }