public static ITcpConnection CreateAcceptedTcpConnection(Guid connectionId, IPEndPoint remoteEndPoint, Socket socket, bool verbose)
 {
     var connection = new TcpConnectionLockless(connectionId, remoteEndPoint, verbose);
     if (connection.InitSocket(socket))
     {
         connection.StartReceive();
         connection.TrySend();
     }
     return connection;
 }
 public static ITcpConnection CreateConnectingTcpConnection(Guid connectionId, 
                                                            IPEndPoint remoteEndPoint, 
                                                            TcpClientConnector connector, 
                                                            TimeSpan connectionTimeout,
                                                            Action<ITcpConnection> onConnectionEstablished, 
                                                            Action<ITcpConnection, SocketError> onConnectionFailed,
                                                            bool verbose)
 {
     var connection = new TcpConnectionLockless(connectionId, remoteEndPoint, verbose);
     // ReSharper disable ImplicitlyCapturedClosure
     connector.InitConnect(remoteEndPoint,
                           (_, socket) =>
                           {
                               if (connection.InitSocket(socket))
                               {
                                   if (onConnectionEstablished != null)
                                       onConnectionEstablished(connection);
                                   connection.StartReceive();
                                   connection.TrySend();
                               }
                           },
                           (_, socketError) =>
                           {
                               if (onConnectionFailed != null)
                                   onConnectionFailed(connection, socketError);
                           }, connection, connectionTimeout);
     // ReSharper restore ImplicitlyCapturedClosure
     return connection;
 }