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
     {