wmib.Instance.CreateInstance C# (CSharp) Method

CreateInstance() public static method

Creates a new instance
public static CreateInstance ( string name, int port ) : Instance
name string
port int
return Instance
        public static Instance CreateInstance(string name, int port = 0)
        {
            Syslog.DebugLog("Creating instance " + name + " with port " + port);
            Instance instance = new Instance(name, port);
            if (Instances.ContainsKey(name))
            {
                throw new Exception("Can't load instance " + name + " because this instance is already running");
            }
            Instances.Add(name, instance);
            return instance;
        }

Usage Example

Esempio n. 1
0
        /// <summary>
        /// Load config of bot
        /// </summary>
        public static int Load()
        {
            if (Directory.Exists(Variables.ConfigurationDirectory) == false)
            {
                Directory.CreateDirectory(Variables.ConfigurationDirectory);
            }

            if (!File.Exists(Variables.ConfigurationDirectory + Path.DirectorySeparatorChar + Paths.ConfigFile))
            {
                Console.WriteLine("Error: unable to find config file in configuration/" + Paths.ConfigFile);
                Console.WriteLine("You can get a configuration file here: https://github.com/benapetr/wikimedia-bot/blob/master/configuration/wmib.conf");
                return(2);
            }

            ConfigurationData            = File2Dict();
            IRC.Username                 = RetrieveConfig("username");
            IRC.NetworkHost              = RetrieveConfig("network");
            IRC.NickName                 = RetrieveConfig("nick");
            IRC.LoginNick                = RetrieveConfig("nick");
            IRC.Hostname                 = RetrieveConfig("host", "wikimedia/bot/wm-bot");
            System.DebugChan             = RetrieveConfig("debug");
            System.MaxGrantableRoleLevel = RetrieveConfig("maximal_grantable_role_level", System.MaxGrantableRoleLevel);
            System.ModulesToLoad         = RetrieveConfig("modules", "");
            Network.BouncerPort          = RetrieveConfig("bouncerp", Network.BouncerPort);
            WebPages.WebpageURL          = RetrieveConfig("web", "");
            IRC.LoginPw        = RetrieveConfig("password", "");
            IRC.Interval       = RetrieveConfig("interval", IRC.Interval);
            MySQL.MysqlPw      = RetrieveConfig("mysql_pw");
            MySQL.Mysqldb      = RetrieveConfig("mysql_db", MySQL.Mysqldb);
            MySQL.MysqlUser    = RetrieveConfig("mysql_user");
            MySQL.MysqlPort    = RetrieveConfig("mysql_port", MySQL.MysqlPort);
            MySQL.MysqlHost    = RetrieveConfig("mysql_host");
            WebPages.Css       = RetrieveConfig("style_html_file", "");
            Network.SystemPort = RetrieveConfig("system_port", Network.SystemPort);
            Postgres.DBNM      = RetrieveConfig("pg_name");
            Postgres.Host      = RetrieveConfig("pg_host");
            Postgres.Pass      = RetrieveConfig("pg_pass");
            Postgres.Unwritten = RetrieveConfig("pg_unwritten_log", Postgres.Unwritten);
            Postgres.Port      = RetrieveConfig("pg_port", Postgres.Port);
            Postgres.User      = RetrieveConfig("pg_user");
            if (string.IsNullOrEmpty(IRC.LoginNick))
            {
                Console.WriteLine("Error there is no login for bot (nick key is missing?)");
                return(1);
            }
            if (string.IsNullOrEmpty(IRC.NetworkHost))
            {
                Console.WriteLine("Error irc server is wrong (network key is missing?)");
                return(4);
            }
            if (string.IsNullOrEmpty(IRC.NickName))
            {
                Console.WriteLine("Error there is no username for bot");
                return(6);
            }
            System.prefix    = RetrieveConfig("system_prefix", System.prefix);
            IRC.UsingBouncer = bool.Parse(RetrieveConfig("serverIO", "false"));
            Syslog.Log("Loading instances");
            Instance.PrimaryInstance = Instance.CreateInstance(IRC.NickName, Network.BouncerPort);
            int CurrentInstance = 0;

            while (CurrentInstance < 20)
            {
                if (!ConfigurationData.ContainsKey("instancename" + CurrentInstance))
                {
                    break;
                }
                string InstanceName = ConfigurationData["instancename" + CurrentInstance];
                Syslog.DebugLog("Instance found: " + InstanceName);
                if (IRC.UsingBouncer)
                {
                    Syslog.DebugLog("Using bouncer, looking for instance port");
                    if (!ConfigurationData.ContainsKey("instanceport" + CurrentInstance))
                    {
                        Syslog.WriteNow("Instance " + InstanceName + " has invalid port, not using", true);
                        continue;
                    }
                    int port = int.Parse(ConfigurationData["instanceport" + CurrentInstance]);
                    Instance.CreateInstance(InstanceName, port);
                }
                else
                {
                    Instance.CreateInstance(InstanceName);
                }
                CurrentInstance++;
            }
            if (!File.Exists(Paths.GetChannelFile()))
            {
                Console.WriteLine("Error there is no channel file (" + Paths.GetChannelFile() + ") to load channels from");
                return(20);
            }
            List <string> channels = new List <string>(File.ReadAllLines(Paths.GetChannelFile()));

            foreach (string x in channels)
            {
                string name = x.Replace(" ", "");
                if (!string.IsNullOrEmpty(name))
                {
                    lock (Channels)
                    {
                        Channels.Add(new Channel(name));
                    }
                }
            }
            if (!string.IsNullOrEmpty(Configuration.System.DebugChan) && !channels.Contains(Configuration.System.DebugChan))
            {
                lock (Channels)
                {
                    Channels.Add(new Channel(Configuration.System.DebugChan));
                }
                Syslog.DebugLog("Debug channel was missing in channel list (fixed by join)");
            }
            Syslog.Log("Channels were all loaded, linking databases");

            // Now when all chans are loaded let's link them together
            lock (Channels)
            {
                foreach (Channel channel in Channels)
                {
                    channel.InitializeShares();
                }
            }

            Syslog.Log("Channel db's working");

            if (!Directory.Exists(Paths.DumpDir))
            {
                Directory.CreateDirectory(Paths.DumpDir);
            }

            return(0);
        }