feat: execute full-repo remaining parity closure plan
This commit is contained in:
19
src/NATS.Server/IO/AdaptiveReadBuffer.cs
Normal file
19
src/NATS.Server/IO/AdaptiveReadBuffer.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace NATS.Server.IO;
|
||||
|
||||
public sealed class AdaptiveReadBuffer
|
||||
{
|
||||
private int _target = 4096;
|
||||
|
||||
public int CurrentSize => Math.Clamp(_target, 512, 64 * 1024);
|
||||
|
||||
public void RecordRead(int bytesRead)
|
||||
{
|
||||
if (bytesRead <= 0)
|
||||
return;
|
||||
|
||||
if (bytesRead >= _target)
|
||||
_target = Math.Min(_target * 2, 64 * 1024);
|
||||
else if (bytesRead < _target / 4)
|
||||
_target = Math.Max(_target / 2, 512);
|
||||
}
|
||||
}
|
||||
15
src/NATS.Server/IO/OutboundBufferPool.cs
Normal file
15
src/NATS.Server/IO/OutboundBufferPool.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Buffers;
|
||||
|
||||
namespace NATS.Server.IO;
|
||||
|
||||
public sealed class OutboundBufferPool
|
||||
{
|
||||
public IMemoryOwner<byte> Rent(int size)
|
||||
{
|
||||
if (size <= 512)
|
||||
return MemoryPool<byte>.Shared.Rent(512);
|
||||
if (size <= 4096)
|
||||
return MemoryPool<byte>.Shared.Rent(4096);
|
||||
return MemoryPool<byte>.Shared.Rent(64 * 1024);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user