private static void NewTcpClientConnection()

in src/Proton.TestPeer/Network/PeerTcpServer.cs [187:260]


      private static void NewTcpClientConnection(IAsyncResult result)
      {
         PeerTcpServer server = (PeerTcpServer)result.AsyncState;

         try
         {
            Socket client = server.serverListener.EndAccept(result);

            server.logger.LogInformation("Peer Tcp Server accepted new connection: {0}", client.RemoteEndPoint);

            client.SendBufferSize = server.options.SendBufferSize;
            client.ReceiveBufferSize = server.options.ReceiveBufferSize;
            client.NoDelay = server.options.TcpNoDelay;
            client.LingerState = new LingerOption(server.options.SoLinger > 0, (int)server.options.SoLinger);
            client.SendTimeout = (int)server.options.SendTimeout;
            client.ReceiveTimeout = (int)server.options.ReceiveTimeout;

            Stream ioStream = new NetworkStream(client);

            if (server.options.SslEnabled)
            {
               try
               {
                  ioStream = server.AuthenticateAsSslServer(ioStream);
               }
               catch (Exception ex)
               {
                  server.logger.LogWarning(ex, "Server SSL Authentication failed: {0}", ex.Message);
                  client.Close();
                  throw;
               }
            }

            // Signal that the client has connected and is ready for scripted action.
            server.clientConnectedHandler(
               new PeerTcpTransport(server.loggerFactory, PeerTransportRole.Server, client, ioStream));
         }
         catch (SocketException sockEx)
         {
            if (!server.closed)
            {
               server.logger.LogWarning(sockEx, "Server accept failed: {0}, SocketErrorCode:{1}",
                                        sockEx.Message, sockEx.SocketErrorCode);
               try
               {
                  server.serverFailedHandler(server, sockEx);
               }
               catch (Exception)
               { }
            }
         }
         catch (Exception ex)
         {
            if (!server.closed)
            {
               server.logger.LogWarning(ex, "Server accept failed: {0}", ex.Message);
               try
               {
                  server.serverFailedHandler(server, ex);
               }
               catch (Exception)
               { }
            }
         }
         finally
         {
            try
            {
               server.Stop(); // Only accept one connection.
            }
            catch (Exception)
            { }
         }
      }