THRIFT-4839: Remove embedded buffering/framed options from TCP transports
Client: netstd
Patch: Kyle Smith + minor changes by Jens Geyer
This closes #1770
diff --git a/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs b/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs
index 813d3f3..bdaa348 100644
--- a/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs
+++ b/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs
@@ -33,24 +33,58 @@
private readonly int _clientWaitingDelay;
private volatile Task _serverTask;
- public TSimpleAsyncServer(ITAsyncProcessor processor, TServerTransport serverTransport,
- TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory,
- ILoggerFactory loggerFactory, int clientWaitingDelay = 10)
- : this(new TSingletonProcessorFactory(processor), serverTransport,
- new TTransportFactory(), new TTransportFactory(),
- inputProtocolFactory, outputProtocolFactory,
- loggerFactory.CreateLogger(nameof(TSimpleAsyncServer)), clientWaitingDelay)
+ public TSimpleAsyncServer(ITProcessorFactory itProcessorFactory,
+ TServerTransport serverTransport,
+ TTransportFactory inputTransportFactory,
+ TTransportFactory outputTransportFactory,
+ TProtocolFactory inputProtocolFactory,
+ TProtocolFactory outputProtocolFactory,
+ ILogger logger,
+ int clientWaitingDelay = 10)
+ : base(itProcessorFactory,
+ serverTransport,
+ inputTransportFactory,
+ outputTransportFactory,
+ inputProtocolFactory,
+ outputProtocolFactory,
+ logger)
+ {
+ _clientWaitingDelay = clientWaitingDelay;
+ }
+
+ public TSimpleAsyncServer(ITProcessorFactory itProcessorFactory,
+ TServerTransport serverTransport,
+ TTransportFactory inputTransportFactory,
+ TTransportFactory outputTransportFactory,
+ TProtocolFactory inputProtocolFactory,
+ TProtocolFactory outputProtocolFactory,
+ ILoggerFactory loggerFactory,
+ int clientWaitingDelay = 10)
+ : this(itProcessorFactory,
+ serverTransport,
+ inputTransportFactory,
+ outputTransportFactory,
+ inputProtocolFactory,
+ outputProtocolFactory,
+ loggerFactory.CreateLogger<TSimpleAsyncServer>())
{
}
- public TSimpleAsyncServer(ITProcessorFactory itProcessorFactory, TServerTransport serverTransport,
- TTransportFactory inputTransportFactory, TTransportFactory outputTransportFactory,
- TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory,
- ILogger logger, int clientWaitingDelay = 10)
- : base(itProcessorFactory, serverTransport, inputTransportFactory, outputTransportFactory,
- inputProtocolFactory, outputProtocolFactory, logger)
+ public TSimpleAsyncServer(ITAsyncProcessor processor,
+ TServerTransport serverTransport,
+ TProtocolFactory inputProtocolFactory,
+ TProtocolFactory outputProtocolFactory,
+ ILoggerFactory loggerFactory,
+ int clientWaitingDelay = 10)
+ : this(new TSingletonProcessorFactory(processor),
+ serverTransport,
+ null, // defaults to TTransportFactory()
+ null, // defaults to TTransportFactory()
+ inputProtocolFactory,
+ outputProtocolFactory,
+ loggerFactory.CreateLogger(nameof(TSimpleAsyncServer)),
+ clientWaitingDelay)
{
- _clientWaitingDelay = clientWaitingDelay;
}
public override async Task ServeAsync(CancellationToken cancellationToken)
diff --git a/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs b/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs
index 1c76b68..20e659d 100644
--- a/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs
+++ b/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs
@@ -68,7 +68,7 @@
public TThreadPoolAsyncServer(ITAsyncProcessor processor, TServerTransport serverTransport, ILogger logger = null)
: this(new TSingletonProcessorFactory(processor), serverTransport,
- new TTransportFactory(), new TTransportFactory(),
+ null, null, // defaults to TTransportFactory()
new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(),
new Configuration(), logger)
{
diff --git a/lib/netstd/Thrift/Thrift.csproj b/lib/netstd/Thrift/Thrift.csproj
index 86de1f8..d093803 100644
--- a/lib/netstd/Thrift/Thrift.csproj
+++ b/lib/netstd/Thrift/Thrift.csproj
@@ -39,7 +39,6 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
diff --git a/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs b/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs
index cd5683b..8147d67 100644
--- a/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs
+++ b/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs
@@ -34,10 +34,8 @@
/// This is the address of the Pipe on the localhost.
/// </summary>
private readonly string _pipeAddress;
-
private bool _asyncMode = true;
private volatile bool _isPending = true;
-
private NamedPipeServerStream _stream = null;
public TNamedPipeServerTransport(string pipeAddress)
diff --git a/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs b/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs
index 4f46f99..0f90841 100644
--- a/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs
+++ b/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs
@@ -16,7 +16,6 @@
// under the License.
using System;
-using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Threading;
@@ -30,20 +29,17 @@
public class TServerSocketTransport : TServerTransport
{
private readonly int _clientTimeout;
- private readonly Buffering _buffering;
private TcpListener _server;
- public TServerSocketTransport(TcpListener listener, int clientTimeout = 0, Buffering buffering = Buffering.None)
+ public TServerSocketTransport(TcpListener listener, int clientTimeout = 0)
{
_server = listener;
_clientTimeout = clientTimeout;
- _buffering = buffering;
}
- public TServerSocketTransport(int port, int clientTimeout = 0, Buffering buffering = Buffering.None)
+ public TServerSocketTransport(int port, int clientTimeout = 0)
+ : this(null, clientTimeout)
{
- _clientTimeout = clientTimeout;
- _buffering = buffering;
try
{
// Make server socket
@@ -102,21 +98,6 @@
Timeout = _clientTimeout
};
- switch (_buffering)
- {
- case Buffering.BufferedTransport:
- tSocketTransport = new TBufferedTransport(tSocketTransport);
- break;
-
- case Buffering.FramedTransport:
- tSocketTransport = new TFramedTransport(tSocketTransport);
- break;
-
- default:
- Debug.Assert(_buffering == Buffering.None);
- break;
- }
-
return tSocketTransport;
}
catch (Exception)
diff --git a/lib/netstd/Thrift/Transport/Server/TTlsServerSocketTransport.cs b/lib/netstd/Thrift/Transport/Server/TTlsServerSocketTransport.cs
index edfaced..5070919 100644
--- a/lib/netstd/Thrift/Transport/Server/TTlsServerSocketTransport.cs
+++ b/lib/netstd/Thrift/Transport/Server/TTlsServerSocketTransport.cs
@@ -16,7 +16,6 @@
// under the License.
using System;
-using System.Diagnostics;
using System.Net;
using System.Net.Security;
using System.Net.Sockets;
@@ -36,13 +35,11 @@
private readonly LocalCertificateSelectionCallback _localCertificateSelectionCallback;
private readonly X509Certificate2 _serverCertificate;
private readonly SslProtocols _sslProtocols;
- private readonly Buffering _buffering;
private TcpListener _server;
public TTlsServerSocketTransport(
TcpListener listener,
X509Certificate2 certificate,
- Buffering buffering = Buffering.None,
RemoteCertificateValidationCallback clientCertValidator = null,
LocalCertificateSelectionCallback localCertificateSelectionCallback = null,
SslProtocols sslProtocols = SslProtocols.Tls12)
@@ -54,7 +51,6 @@
}
_serverCertificate = certificate;
- _buffering = buffering;
_clientCertValidator = clientCertValidator;
_localCertificateSelectionCallback = localCertificateSelectionCallback;
_sslProtocols = sslProtocols;
@@ -64,23 +60,11 @@
public TTlsServerSocketTransport(
int port,
X509Certificate2 certificate,
- Buffering buffering = Buffering.None,
RemoteCertificateValidationCallback clientCertValidator = null,
LocalCertificateSelectionCallback localCertificateSelectionCallback = null,
SslProtocols sslProtocols = SslProtocols.Tls12)
+ : this(null, certificate, clientCertValidator, localCertificateSelectionCallback)
{
- if (!certificate.HasPrivateKey)
- {
- throw new TTransportException(TTransportException.ExceptionType.Unknown,
- "Your server-certificate needs to have a private key");
- }
-
- _serverCertificate = certificate;
- _buffering = buffering;
- _clientCertValidator = clientCertValidator;
- _localCertificateSelectionCallback = localCertificateSelectionCallback;
- _sslProtocols = sslProtocols;
-
try
{
// Create server socket
@@ -137,25 +121,8 @@
_localCertificateSelectionCallback, _sslProtocols);
await tTlsSocket.SetupTlsAsync();
-
- TTransport trans = tTlsSocket;
-
- switch(_buffering)
- {
- case Buffering.BufferedTransport:
- trans = new TBufferedTransport(trans);
- break;
-
- case Buffering.FramedTransport:
- trans = new TFramedTransport(trans);
- break;
-
- default:
- Debug.Assert(_buffering == Buffering.None);
- break;
- }
- return trans;
+ return tTlsSocket;
}
catch (Exception ex)
{
diff --git a/lib/netstd/Thrift/Transport/TFramedTransport.cs b/lib/netstd/Thrift/Transport/TFramedTransport.cs
index 6d0802d..fe7793e 100644
--- a/lib/netstd/Thrift/Transport/TFramedTransport.cs
+++ b/lib/netstd/Thrift/Transport/TFramedTransport.cs
@@ -22,15 +22,6 @@
namespace Thrift.Transport
{
- // it does not make much sense to use buffered when we already use framed
- public enum Buffering
- {
- None,
- BufferedTransport,
- FramedTransport
- }
-
-
// ReSharper disable once InconsistentNaming
public class TFramedTransport : TTransport
{