Inheritance: IPhpConfiguration, IPhpConfigurationSection
Esempio n. 1
0
        /// <summary>
        /// Writes MySql legacy options and their values to XML text stream.
        /// Skips options whose values are the same as default values of Phalanger.
        /// </summary>
        /// <param name="writer">XML writer.</param>
        /// <param name="options">A hashtable containing PHP names and option values. Consumed options are removed from the table.</param>
        /// <param name="writePhpNames">Whether to add "phpName" attribute to option nodes.</param>
        public static void LegacyOptionsToXml(XmlTextWriter writer, Hashtable options, bool writePhpNames) // GENERICS:<string,string>
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            MySqlLocalConfig  local  = new MySqlLocalConfig();
            MySqlGlobalConfig global = new MySqlGlobalConfig();
            PhpIniXmlWriter   ow     = new PhpIniXmlWriter(writer, options, writePhpNames);

            ow.StartSection("mysql");

            // local:
            ow.WriteOption("mysql.default_port", "Port", 3306, local.Port);
            ow.WriteOption("mysql.default_host", "Server", null, local.Server);
            ow.WriteOption("mysql.default_user", "User", null, local.User);
            ow.WriteOption("mysql.default_password", "Password", null, local.Password);
            ow.WriteOption("mysql.connect_timeout", "ConnectTimeout", 0, local.ConnectTimeout);
            ow.WriteOption("mysql.default_command_timeout", "DefaultCommandTimeout", 0, local.DefaultCommandTimeout);

            // global:
            ow.WriteOption("mysql.max_links", "MaxConnections", -1, global.MaxConnections);

            ow.WriteEnd();
        }
Esempio n. 2
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            MySqlLocalConfig  local    = (MySqlLocalConfig)config.GetLibraryConfig(MySqlLibraryDescriptor.Singleton);
            MySqlLocalConfig  @default = DefaultLocal;
            MySqlGlobalConfig global   = Global;

            switch (option)
            {
            // local:

            case "mysql.connect_timeout": return(PhpIni.GSR(ref local.ConnectTimeout, @default.ConnectTimeout, value, action));

            case "mysql.default_port": return(PhpIni.GSR(ref local.Port, @default.Port, value, action));

            case "mysql.default_host": return(PhpIni.GSR(ref local.Server, @default.Server, value, action));

            case "mysql.default_user": return(PhpIni.GSR(ref local.User, @default.User, value, action));

            case "mysql.default_password": return(PhpIni.GSR(ref local.Password, @default.Password, value, action));

            case "mysql.default_command_timeout": return(PhpIni.GSR(ref local.DefaultCommandTimeout, @default.DefaultCommandTimeout, value, action));

            case "mysql.connection_string": return(PhpIni.GSR(ref local.ConnectionString, null, value, action));

            // global:

            case "mysql.max_links":
                Debug.Assert(action == IniAction.Get);
                return(PhpIni.GSR(ref global.MaxConnections, -1, null, action));

            case "mysql.max_pool_size":
                return(PhpIni.GSR(ref global.MaxPoolSize, 100, value, action));
            }

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return(null);
        }
Esempio n. 3
0
        // GENERICS:<string,string>
        /// <summary>
        /// Writes MySql legacy options and their values to XML text stream.
        /// Skips options whose values are the same as default values of Phalanger.
        /// </summary>
        /// <param name="writer">XML writer.</param>
        /// <param name="options">A hashtable containing PHP names and option values. Consumed options are removed from the table.</param>
        /// <param name="writePhpNames">Whether to add "phpName" attribute to option nodes.</param>
        public static void LegacyOptionsToXml(XmlTextWriter writer, Hashtable options, bool writePhpNames)
        {
            if (writer == null)
                throw new ArgumentNullException("writer");
            if (options == null)
                throw new ArgumentNullException("options");

            MySqlLocalConfig local = new MySqlLocalConfig();
            MySqlGlobalConfig global = new MySqlGlobalConfig();
            PhpIniXmlWriter ow = new PhpIniXmlWriter(writer, options, writePhpNames);

            ow.StartSection("mysql");

            // local:
            ow.WriteOption("mysql.default_port", "Port", 3306, local.Port);
            ow.WriteOption("mysql.default_host", "Server", null, local.Server);
            ow.WriteOption("mysql.default_user", "User", null, local.User);
            ow.WriteOption("mysql.default_password", "Password", null, local.Password);
            ow.WriteOption("mysql.connect_timeout", "ConnectTimeout", 0, local.ConnectTimeout);
            ow.WriteOption("mysql.default_command_timeout", "DefaultCommandTimeout", 0, local.DefaultCommandTimeout);

            // global:
            ow.WriteOption("mysql.max_links", "MaxConnections", -1, global.MaxConnections);

            ow.WriteEnd();
        }
Esempio n. 4
0
        private static string BuildConnectionString(MySqlLocalConfig local, MySqlGlobalConfig global, string server, string user, string password, ConnectFlags flags)
        {
            // connection strings:
            if (server == null && user == null && password == null && flags == ConnectFlags.None && !string.IsNullOrEmpty(local.ConnectionString))
                return local.ConnectionString;

            // TODO: local.ConnectionStringName

            // build connection string:
            string pipe_name = null;
            int port = -1;

            if (server != null)
                ParseServerName(ref server, out port, out pipe_name);
            else
                server = local.Server;

            if (port == -1) port = local.Port;
            if (user == null) user = local.User;
            if (password == null) password = local.Password;

            // build the connection string to be used with MySQL Connector/.NET
            // see http://dev.mysql.com/doc/refman/5.5/en/connector-net-connection-options.html
            return PhpMyDbConnection.BuildConnectionString(
              server, user, password,

              String.Format("allowzerodatetime=true;allow user variables=true;connect timeout={0};Port={1};SSL Mode={2};Use Compression={3}{4}{5};Max Pool Size={6}",
                (local.ConnectTimeout > 0) ? local.ConnectTimeout : Int32.MaxValue,
                port,
                (flags & ConnectFlags.SSL) != 0 ? "Preferred" : "None",     // (since Connector 6.2.1.) ssl mode={None|Preferred|Required|VerifyCA|VerifyFull}   // (Jakub) use ssl={true|false} has been deprecated
                (flags & ConnectFlags.Compress) != 0 ? "true" : "false",    // Use Compression={true|false}
                (pipe_name != null) ? ";Pipe=" + pipe_name : null,  // Pipe={...}
                (flags & ConnectFlags.Interactive) != 0 ? ";Interactive=true" : null,    // Interactive={true|false}
                global.MaxPoolSize                                          // Max Pool Size=100
                )
            );
        }