Esempio n. 1
0
 CachedBlock(BlockInfo block, ByteBufferPool.Releaser releaser, Memory <byte> buffer, bool flushing)
 {
     Block          = block;
     Buffer         = buffer;
     BufferReleaser = releaser;
     Flushing       = flushing;
 }
Esempio n. 2
0
        public override void Decode(byte[] buffer, int offset, int length)
        {
            PieceIndex    = ReadInt(buffer, ref offset);
            StartOffset   = ReadInt(buffer, ref offset);
            RequestLength = length - 8;

            // This buffer will be freed after the PieceWriter has finished with it
            DataReleaser = DiskManager.BufferPool.Rent(RequestLength, out ByteBuffer _);
            Buffer.BlockCopy(buffer, offset, Data, 0, RequestLength);
        }
Esempio n. 3
0
 public CachedBlock(BlockInfo block, ByteBufferPool.Releaser releaser, Memory <byte> buffer)
     : this(block, releaser, buffer, false)
 {
 }
Esempio n. 4
0
 public void Initialize(Span <BlockInfo> requests)
 {
     RequestsMemoryReleaser = Pool.Rent(MemoryMarshal.AsBytes(requests).Length, out var memory);
     RequestsMemory         = memory;
     requests.CopyTo(Requests);
 }