public static void WriteResult(Stream stream, org.hsqldb.Result result)
        {
            JavaOutputStreamAdapter outputStream
                = new JavaOutputStreamAdapter(stream);
            org.hsqldb.rowio.RowOutputBinary rowOutput
                = new org.hsqldb.rowio.RowOutputBinary();

            org.hsqldb.Result.write(
                result,
                rowOutput,
                outputStream);
        }
        /// <summary>
        /// Opens the connection.
        /// </summary>
        /// <param name="host">The host.</param>
        /// <param name="port">The port.</param>
        /// <param name="tls">
        /// if set to <c>true</c>, use transport layer security.
        /// </param>
        /// <exception cref="HsqlException">
        /// </exception>
        protected virtual void OpenConnection(
            string host,
            int port,
            bool tls)
        {
            if (m_tcpClient != null)
            {
                throw new System.InvalidOperationException(
                    "The connection is already open.");
            }

            HsqlDiagnostics.Debug("...");

            try
            {
                HsqlDiagnostics.Debug("Entered with arguments ({0},{1},{2})",
                    host, port, tls);

                m_tcpClient = new TcpClient(host, port);

                HsqlDiagnostics.Debug("Created TcpClient({0},{1})", host, port);

                Stream stream = m_tcpClient.GetStream();

                HsqlDiagnostics.Debug("Got client stream from TcpClient");

                if (m_tls)
                {
                    HsqlDiagnostics.Debug("Initializing Client TLS...");

                    SslStream sslStream = new SslStream(
                        stream,
                        false,
                        ValidateRemoteCertificate,
                        null);

                    HsqlDiagnostics.Debug("Invoking sslStream.AuthenticateAsClient({0})",
                        host);

                    sslStream.AuthenticateAsClient(host);

                    stream = sslStream;
                }

                JavaInputStreamAdapter input = new JavaInputStreamAdapter(stream);
                JavaOutputStreamAdapter output = new JavaOutputStreamAdapter(stream);

                m_dataInput = new DataInputStream(new BufferedInputStream(input));
                m_dataOutput = new BufferedOutputStream(output);
            }
            catch (System.Exception e)
            {
                throw Trace.error(Trace.SOCKET_ERROR, e);
            }
        }