CachedBlock(BlockInfo block, ByteBufferPool.Releaser releaser, Memory <byte> buffer, bool flushing) { Block = block; Buffer = buffer; BufferReleaser = releaser; Flushing = flushing; }
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); }
public CachedBlock(BlockInfo block, ByteBufferPool.Releaser releaser, Memory <byte> buffer) : this(block, releaser, buffer, false) { }
public void Initialize(Span <BlockInfo> requests) { RequestsMemoryReleaser = Pool.Rent(MemoryMarshal.AsBytes(requests).Length, out var memory); RequestsMemory = memory; requests.CopyTo(Requests); }