public ARDBConnectionManager(ProgressInterface progi = null) { if (progi != null) { default_progress_interface = progi; } else { this.progi = default_progress_interface; } }
// 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); }
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(); } }
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(); }