コード例 #1
0
 public ARDBConnectionManager(ProgressInterface progi = null)
 {
     if (progi != null)
     {
         default_progress_interface = progi;
     }
     else
     {
         this.progi = default_progress_interface;
     }
 }
コード例 #2
0
 // Use this for initialization
 void Start()
 {
     if (gameObject.name.Contains("EnemyLacaio"))
     {
         target = GameObject.Find("Castelo Amigo");
     }
     else
     {
         target = GameObject.FindWithTag("Player");
         player = target.GetComponent <ProgressInterface> ();
     }
     health      = GetComponent <Health>();
     agent       = GetComponent <NavMeshAgent>();
     agent.speed = speed;
     transform.LookAt(target.transform);
 }
コード例 #3
0
        public void Start()
        {
            int maintain_num_connections = MCv2Persistance.Instance.Config.DatabaseConfiguration.NumCachedDBConnections;

            progi = default_progress_interface;

            if (progi != null)
            {
                progi.SetTitle("Filling Connection Cache");
                progi.Show();
                progi.SetMaximum(maintain_num_connections + 1);
            }

            foreach (AutoRefreshDBConnection sqlconn in db_connections_checked_out)
            {
                if (sqlconn != null)
                {
                    sqlconn.Dispose();
                }
            }

            db_connections_checked_out.Clear();

            foreach (AutoRefreshDBConnection sqlconn in db_connection_pool)
            {
                if (sqlconn != null)
                {
                    sqlconn.Dispose();
                }
            }

            db_connection_pool.Clear();

            db_connection_string_cache = MCv2Persistance.Instance.Config.DatabaseConfiguration.DatabaseConnectionProperties.ConnectionString;

            //ready
            if (progi != null)
            {
                progi.Step();
            }

            Object step_locker = new Object();

            var             connhold = new ConcurrentBag <AutoRefreshDBConnection>();
            ParallelOptions options  = new ParallelOptions();

            options.MaxDegreeOfParallelism = -1; // -1 is for unlimited. 1 is for sequential.
            options.TaskScheduler          = TaskScheduler.FromCurrentSynchronizationContext();

            Parallel.For(0, maintain_num_connections, options, async i =>
            {
                connhold.Add(await GenerateNewConnection());

                if (progi != null)
                {
                    lock (step_locker)
                        progi.Step();
                }
            });

            db_connection_pool.AddRange(connhold);

            if (progi != null)
            {
                progi.Dispose();
            }
        }
コード例 #4
0
        public static async Task SetUsersInGroup(ulong group_id, ulong[] user_ids, ProgressInterface progi = null)
        {
            if (progi != null)
            {
                progi.Show();
                progi.SetLabel("Gathering Information");
                progi.SetMaximum(2);
            }

            var group_list = await GetGroupIDs();

            if (progi != null)
            {
                progi.Step();
            }

            if (!group_list.Contains(group_id))
            {
                throw new Exception("User group " + group_id + "doesn't exist.");
            }

            var users_in_group = await GetUsersInGroup(group_id);

            if (progi != null)
            {
                progi.Step();
            }

            var users_to_remove = users_in_group.Where(x => !user_ids.Contains(x));
            var users_to_add    = user_ids.Where(x => !users_in_group.Contains(x));

            if (progi != null)
            {
                progi.Reset();
                progi.SetMaximum(2);
            }


            //remove users

            if (users_to_remove.Count() > 0)
            {
                var sqlconn2 = await ARDBConnectionManager.default_manager.CheckOut();

                string val = "";

                foreach (var user in users_to_remove)
                {
                    val += user + ", ";
                }

                val = val.Substring(0, val.Length - 2);

                using (MySqlCommand sqlcmd = new MySqlCommand("delete from `" + group_id + "` where user_id in (" + val + ");", sqlconn2.Connection))
                {
                    //sqlcmd.Parameters.AddWithValue("@user_ids", val);

                    await sqlcmd.ExecuteNonQueryAsync();
                }

                ARDBConnectionManager.default_manager.CheckIn(sqlconn2);

                if (progi != null)
                {
                    progi.Step();
                }
            }

            //add users
            if (users_to_add.Count() > 0)
            {
                var sqlconn2 = await ARDBConnectionManager.default_manager.CheckOut();

                string val = "";

                foreach (var user in users_to_add)
                {
                    val += "(" + user + "), ";
                }

                val = val.Substring(0, val.Length - 2);

                using (MySqlCommand sqlcmd = new MySqlCommand("insert into `" + group_id + "` (user_id) values " + val + ";", sqlconn2.Connection))
                {
                    //sqlcmd.Parameters.AddWithValue("@user_ids", val);

                    await sqlcmd.ExecuteNonQueryAsync();
                }

                ARDBConnectionManager.default_manager.CheckIn(sqlconn2);

                if (progi != null)
                {
                    progi.Step();
                }
            }

            progi.Dispose();
        }