예제 #1
0
 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);
     }
 }
예제 #2
0
        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);
        }