mirror of
https://github.com/FabInfra/capnproto-dotnetcore_Runtime.git
synced 2025-03-12 14:51:41 +01:00
avoid multimodal timing effects
This commit is contained in:
parent
7b16dbd6e9
commit
49c5e80436
@ -7,7 +7,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.12.0" />
|
||||
<PackageReference Include="Capnp.Net.Runtime" Version="1.3.23-g5e71ce69c5" />
|
||||
<PackageReference Include="Capnp.Net.Runtime" Version="1.3.31-g7b16dbd6e9" />
|
||||
<PackageReference Include="CapnpC.CSharp.MsBuild.Generation" Version="1.2.138" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.11.3" />
|
||||
<PackageReference Include="Grpc.Net.Client" Version="2.27.0" />
|
||||
|
@ -6,7 +6,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Capnp.Net.Runtime" Version="1.3.23-g5e71ce69c5" />
|
||||
<PackageReference Include="Capnp.Net.Runtime" Version="1.3.31-g7b16dbd6e9" />
|
||||
<PackageReference Include="CapnpC.CSharp.MsBuild.Generation" Version="1.2.138" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@ -5,14 +5,22 @@ namespace Capnp.Util
|
||||
{
|
||||
internal class DuplexBufferedStream : Stream
|
||||
{
|
||||
const int DefaultBufferSize = 4096;
|
||||
|
||||
readonly BufferedStream _readStream;
|
||||
readonly BufferedStream _writeStream;
|
||||
readonly int _bufferSize;
|
||||
readonly object _reentrancyBlocker = new object();
|
||||
|
||||
public DuplexBufferedStream(Stream stream)
|
||||
public DuplexBufferedStream(Stream stream, int bufferSize)
|
||||
{
|
||||
_readStream = new BufferedStream(stream, bufferSize);
|
||||
_writeStream = new BufferedStream(stream, bufferSize);
|
||||
_bufferSize = bufferSize;
|
||||
}
|
||||
|
||||
public DuplexBufferedStream(Stream stream): this(stream, DefaultBufferSize)
|
||||
{
|
||||
_readStream = new BufferedStream(stream);
|
||||
_writeStream = new BufferedStream(stream);
|
||||
}
|
||||
|
||||
public override bool CanRead => true;
|
||||
@ -51,6 +59,9 @@ namespace Capnp.Util
|
||||
|
||||
public override void Write(byte[] buffer, int offset, int count)
|
||||
{
|
||||
if (buffer.Length > _bufferSize) // avoid moiré-like timing effects
|
||||
_writeStream.Flush();
|
||||
|
||||
_writeStream.Write(buffer, offset, count);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user