// free resources public void Dispose() { m_Attempts.Clear(); //foreach (var key in m_Attempts.Select(x => x.Key).ToArray()) m_Attempts[key] = null; m_Attempts = null; m_SaReference.Clear(); //foreach (var key in m_SaReference.Select(x => x.Key).ToArray()) m_SaReference[key] = null; m_SaReference = null; m_SatReference.Clear(); //foreach (var key in m_SatReference.Select(x => x.Key).ToArray()) m_SatReference[key] = null; m_SatReference = null; m_SataReference.Clear(); //foreach (var key in m_SataReference.Select(x => x.Key).ToArray()) m_SataReference[key] = null; m_SataReference = null; m_Auras.Clear(); //foreach (var key in m_Auras.Select(x => x.Key).ToArray()) m_Auras[key] = null; m_Auras = null; m_Deaths.Clear(); //foreach (var key in m_Deaths.Select(x => x.Key).ToArray()) m_Deaths[key] = null; m_Deaths = null; m_Dispels.Clear(); //foreach (var key in m_Dispels.Select(x => x.Key).ToArray()) m_Dispels[key] = null; m_Dispels = null; m_Interrupts.Clear(); //foreach (var key in m_Interrupts.Select(x => x.Key).ToArray()) m_Interrupts[key] = null; m_Interrupts = null; m_Damage.Clear(); //foreach (var key in m_Damage.Select(x => x.Key).ToArray()) m_Damage[key] = null; m_Damage = null; m_Healing.Clear(); //foreach (var key in m_Healing.Select(x => x.Key).ToArray()) m_Healing[key] = null; m_Healing = null; m_Loot.Clear(); //foreach (var key in m_Loot.Select(x => x.Key).ToArray()) m_Loot[key] = null; m_Loot = null; m_Threat.Clear(); //foreach (var key in m_Threat.Select(x => x.Key).ToArray()) m_Threat[key] = null; m_Threat = null; m_Casts.Clear(); //foreach (var key in m_Casts.Select(x => x.Key).ToArray()) m_Casts[key] = null; m_Casts = null; m_Participants.Clear(); m_Participants = null; foreach (var key in mAtmtCache.Select(x => x.Key).ToArray()) { mAtmtCache[key] = null; //for (int i = 0; i < mAtmtCache[key].Length; ++i) mAtmtCache[key][i] = null; } mTooltipCache.Clear(); mTooltipCache = null; mQueryCache.Clear(); mQueryCache = null; mAtmtCache = null; m_Instance = null; m_DB = null; m_Guild = null; m_Server = null; }
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { if (mail.Value.Contains("@") && mail.Value.Contains(".")) { try { SQLWrapper DB = App.GetDB(0); MySqlCommand cmd = DB.CreateCommand(); cmd.CommandText = "INSERT INTO gn_contact (name, mail, subject, content) VALUES (?,?,?,?)"; cmd.Parameters.AddWithValue("@name", Utility.SecureInput(namebox.Value)); cmd.Parameters.AddWithValue("@mail", Utility.SecureInput(mail.Value)); cmd.Parameters.AddWithValue("@subject", Utility.SecureInput(subject.Value)); cmd.Parameters.AddWithValue("@content", Utility.SecureInput(text.Value)); cmd.ExecuteNonQuery(); //DB.Kill(); namebox.Value = ""; mail.Value = ""; subject.Value = ""; text.Value = ""; (this.Master as MasterPage).setNotifaction("Success!", 0); } catch (Exception) { (this.Master as MasterPage).setNotifaction("Some error occured, please try it later again!", 2); } } else { (this.Master as MasterPage).setNotifaction("Invalid mail adress!", 1); } } this.Title = "LegacyPlayers | Contact"; }
public static MySqlDataReader ExecuteReaderRpll(this MySqlCommand cmd, bool tryagain = true) { try { var copy = new ConcurrentDictionary <ulong, List <Tuple <long, MySqlDataReader> > >(_mMySqlDataReaders); foreach (var readerIP in copy) { foreach (var reader in readerIP.Value) { if (reader == null) { continue; } if (reader.Item1 + 600 > DateTimeOffset.UtcNow.ToUnixTimeSeconds()) { break; } reader.Item2.Close(); reader.Item2.Dispose(); } _mMySqlDataReaders[readerIP.Key].Clear(); _mMySqlDataReaders.Remove(readerIP.Key); } } catch { } // Add data reader organization MySqlDataReader rd; string ip = "0"; if (HttpContext.Current != null) { ip = Utility.GetIPAddress(HttpContext.Current.Request); } ulong key = Farmhash.Sharp.Farmhash.Hash64(ip); try { rd = cmd.ExecuteReader(); if (!_mMySqlDataReaders.ContainsKey(key)) { _mMySqlDataReaders[key] = new List <Tuple <long, MySqlDataReader> >(); } _mMySqlDataReaders[key].Add(new Tuple <long, MySqlDataReader>(DateTimeOffset.UtcNow.ToUnixTimeSeconds(), rd)); return(rd); } catch (MySqlException) { // Just open new connection and execute the reader on there if (tryagain) { if (cmd.Connection.Database.ToLower().Contains("rpll_vanilla")) { return(App.GetDB(1).Query(cmd.CommandText).ExecuteReaderRpll(false)); } else if (cmd.Connection.Database.ToLower().Contains("rpll_tbc")) { return(App.GetDB(2).Query(cmd.CommandText).ExecuteReaderRpll(false)); } else { return(App.GetDB().Query(cmd.CommandText).ExecuteReaderRpll(false)); } } else { if (_mMySqlDataReaders.ContainsKey(key) && _mMySqlDataReaders[key].Any()) { var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); foreach (var reader in _mMySqlDataReaders[key]) { if (reader == null) { continue; } if (reader.Item1 + 30 > DateTimeOffset.UtcNow.ToUnixTimeSeconds()) { break; } reader.Item2.Close(); reader.Item2.Dispose(); } _mMySqlDataReaders[key].Clear(); } rd = cmd.ExecuteReader(); if (!_mMySqlDataReaders.ContainsKey(key)) { _mMySqlDataReaders[key] = new List <Tuple <long, MySqlDataReader> >(); } _mMySqlDataReaders[key].Add(new Tuple <long, MySqlDataReader>(DateTimeOffset.UtcNow.ToUnixTimeSeconds(), rd)); return(rd); } } catch (KeyNotFoundException) { return(null); // Maybe a data race thingy? } catch (NullReferenceException) { SQLWrapper.DisposeSQL(); return(null); // Dont really know what to do then } catch (IndexOutOfRangeException) { return(null); // Dont really know what to do then } catch (ObjectDisposedException) { SQLWrapper.DisposeSQL(); return(null); // No clue } //return null; // Uston?!! }
private RaidData(int _InstanceID, int _GuildID, long _Start, long _End, string _LookUpSpace, int _Id, int _Uploader, int _Index = 0) { RequestData(_Index, _Id, _Uploader); m_InstanceId = _Id; m_UploaderId = _Uploader; m_DB = App.GetDB(_Index + 1); string[] Tokens = _LookUpSpace.Split('&'); m_Instance = App.m_Instances[_InstanceID].Name; m_Guild = App.GetGuild(_GuildID); m_Server = App.m_Server[m_Guild.ServerID]; m_Start = _Start; m_End = _End; string[] Offset = Tokens[0].Split(','); try { MySqlDataReader dr = m_DB .Query("SELECT id, npcid, start, end, killed FROM rs_attempts WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Attempts[dr.GetInt32(0)] = new RS_Attempts() { NpcId = dr.GetInt32(1), Start = dr.GetInt32(2), End = dr.GetInt32(3), Killed = dr.GetInt16(4) == 1 }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "Attempts: " + ex.Message + "<br /><br />"; } // TODO: Optimize these try { if (!m_Uploader.ContainsKey(_Id)) { m_Uploader[_Id] = new List <KeyValuePair <int, int> >(); } MySqlDataReader dr = m_DB.Query("SELECT a.id, b.userid FROM rs_instance_uploader a LEFT JOIN gn_uploader b ON a.uploaderid = b.id WHERE a.instanceid=" + _Id).ExecuteReaderRpll(); while (dr.Read()) { var kvp = new KeyValuePair <int, int>(dr.GetInt32(0), dr.GetInt32(1)); if (!m_Uploader[_Id].Contains(kvp)) { m_Uploader[_Id].Add(kvp); } } dr.CloseRpll(); dr = m_DB.Query("SELECT charid FROM rs_participants WHERE uploaderid=" + _Uploader).ExecuteReaderRpll(); while (!dr.IsClosed && dr.Read()) { m_Participants.Add(App.GetChar(dr.GetInt32(0))); } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_instance_uploader: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[1].Split(','); m_SaReference[0] = new RS_Sa_Reference() { SourceId = 0, AbilityId = 0 }; MySqlDataReader dr = m_DB.Query("SELECT id, sourceid, abilityid FROM rs_sa_reference WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_SaReference[dr.GetInt32(0)] = new RS_Sa_Reference() { SourceId = dr.GetInt32(1), AbilityId = dr.GetInt32(2) }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "RS_sa_reference: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[2].Split(','); m_SatReference[0] = new RS_Sat_Reference() { SourceId = 0, AbilityId = 0, TargetId = 0 }; MySqlDataReader dr = m_DB.Query("SELECT id, targetid, said FROM rs_sat_reference WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_SatReference[dr.GetInt32(0)] = new RS_Sat_Reference() { TargetId = dr.GetInt32(1), AbilityId = m_SaReference[dr.GetInt32(2)].AbilityId, SourceId = m_SaReference[dr.GetInt32(2)].SourceId, }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_sat_reference: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[3].Split(','); m_SataReference[0] = new RS_Sata_Reference() { SourceId = 0, AbilityId = 0, TargetId = 0, TargetAbilityId = 0 }; MySqlDataReader dr = m_DB.Query("SELECT id, targetabilityid, satid FROM rs_sata_reference WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_SataReference[dr.GetInt32(0)] = new RS_Sata_Reference() { TargetAbilityId = dr.GetInt32(1), AbilityId = m_SatReference[dr.GetInt32(2)].AbilityId, SourceId = m_SatReference[dr.GetInt32(2)].SourceId, TargetId = m_SatReference[dr.GetInt32(2)].TargetId }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_sata_reference: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[4].Split(','); MySqlDataReader dr = m_DB.Query("SELECT id, said, gained, faded FROM rs_auras WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Auras[dr.GetInt32(0)] = new RS_Auras() { SaRefId = dr.GetInt32(1), Gained = dr.GetInt32(2), Faded = dr.GetInt32(3) }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_auras: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[5].Split(','); MySqlDataReader dr = m_DB.Query("SELECT id, sourceid, timestamp FROM rs_deaths WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Deaths[dr.GetInt32(0)] = new RS_Deaths() { SourceId = dr.GetInt32(1), TimeStamp = dr.GetInt32(2) }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_deaths: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[6].Split(','); MySqlDataReader dr = m_DB.Query("SELECT id, sataid, timestamp FROM rs_dispels WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Dispels[dr.GetInt32(0)] = new RS_Dispels() { SataRefId = dr.GetInt32(1), TimeStamp = dr.GetInt32(2) }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_dispels: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[7].Split(','); MySqlDataReader dr = m_DB.Query("SELECT id, sataid, timestamp FROM rs_interrupts WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Interrupts[dr.GetInt32(0)] = new RS_Interrupts() { SataRefId = dr.GetInt32(1), TimeStamp = dr.GetInt32(2) }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_interrupts: " + ex.Message + "<br /><br />"; } try{ Offset = Tokens[8].Split(','); if (Tokens.Length >= 14) { MySqlDataReader dr = m_DB .Query("SELECT a.id, a.satid, a.hittype, a.timestamp, a.amount, IFNULL(b.amount,0) FROM rs_damage a LEFT JOIN rs_damage_threat b ON a.id = b.dmgid WHERE a.id>=" + Offset[0] + " AND a.id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Damage[dr.GetInt32(0)] = new RS_Damage() { SatRefId = dr.GetInt32(1), HitType = dr.GetInt16(2), TimeStamp = dr.GetInt32(3), Amount = dr.GetInt32(4), MitGated = new int[3] }; m_Threat.Add(new RS_Threat() { SatRefId = dr.GetInt32(1), HitType = dr.GetInt16(2), TimeStamp = dr.GetInt32(3), Amount = dr.GetInt32(5), }); } dr.CloseRpll(); } else { MySqlDataReader dr = m_DB .Query("SELECT id, satid, hittype, timestamp, amount FROM rs_damage WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Damage[dr.GetInt32(0)] = new RS_Damage() { SatRefId = dr.GetInt32(1), HitType = dr.GetInt16(2), TimeStamp = dr.GetInt32(3), Amount = dr.GetInt32(4), MitGated = new int[3] }; } dr.CloseRpll(); } if (_Index >= 1) { MySqlDataReader dr = m_DB.Query("SELECT dmgid, type, amount FROM rs_damage_mitgated WHERE dmgid>=" + Offset[0] + " AND dmgid<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Damage[dr.GetInt32(0)].MitGated[dr.GetInt32(1)] = dr.GetInt32(2); } dr.CloseRpll(); } else { MySqlDataReader dr = m_DB.Query("SELECT dmgid, amount FROM rs_damage_mitgated WHERE dmgid>=" + Offset[0] + " AND dmgid<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Damage[dr.GetInt32(0)].MitGated[0] = dr.GetInt32(1); } dr.CloseRpll(); } } catch (KeyNotFoundException ex) { Error += "rs_damage: " + ex.Message + "<br /><br />"; } try { if (Tokens.Length < 14) { Offset = Tokens[9].Split(','); MySqlDataReader dr = m_DB .Query("SELECT id, satid, hittype, timestamp, amount FROM rs_healing WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Healing[dr.GetInt32(0)] = new RS_Healing() { SatRefId = dr.GetInt32(1), HitType = dr.GetInt16(2), TimeStamp = dr.GetInt32(3), Amount = dr.GetInt32(4) }; } dr.CloseRpll(); } else { Offset = Tokens[9].Split(','); MySqlDataReader dr = m_DB .Query("SELECT a.id, a.satid, a.hittype, a.timestamp, a.amount, IFNULL(b.amount, 0) FROM rs_healing a LEFT JOIN rs_healing_threat b ON a.id = b.healid WHERE a.id>=" + Offset[0] + " AND a.id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Healing[dr.GetInt32(0)] = new RS_Healing() { SatRefId = dr.GetInt32(1), HitType = dr.GetInt16(2), TimeStamp = dr.GetInt32(3), Amount = dr.GetInt32(4) }; if (dr.GetInt32(5) > 0) { m_Threat.Add(new RS_Threat() { SatRefId = dr.GetInt32(1), HitType = (short)(60 + dr.GetInt16(2)), TimeStamp = dr.GetInt32(3), Amount = dr.GetInt32(5), }); } } dr.CloseRpll(); } } catch (KeyNotFoundException ex) { Error += "rs_healing: " + ex.Message + "<br /><br />"; } try { Offset = Tokens[10].Split(','); MySqlDataReader dr = m_DB.Query("SELECT id, targetid, itemid, attemptid FROM rs_loot WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Loot[dr.GetInt32(0)] = new RS_Loot() { TargetId = dr.GetInt32(1), ItemId = dr.GetInt32(2), AttemptId = dr.GetInt32(3) }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_loot: " + ex.Message + "<br /><br />"; } if (Tokens.Length >= 14) { try { Offset = Tokens[13].Split(','); MySqlDataReader dr = m_DB .Query("SELECT said, amount, timestamp FROM rs_gained_threat WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); int maxSatRef = m_SatReference.Max(x => x.Key) + 1; Dictionary <int, int> keyMapper = new Dictionary <int, int>(); while (dr.Read()) { // Creating custom satrefids to make integration easier // Source == Target int saId = dr.GetInt32(0); if (!keyMapper.ContainsKey(saId)) { m_SatReference[maxSatRef] = new RS_Sat_Reference() { SourceId = m_SaReference[saId].SourceId, AbilityId = m_SaReference[saId].AbilityId, TargetId = m_SaReference[saId].SourceId }; keyMapper[saId] = maxSatRef; ++maxSatRef; } m_Threat.Add(new RS_Threat() { SatRefId = keyMapper[saId], Amount = dr.GetInt32(1), TimeStamp = dr.GetInt32(2), HitType = 20, }); } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_threat: " + ex.Message + "<br /><br />"; } } try { Offset = Tokens[11].Split(','); MySqlDataReader dr = m_DB .Query("SELECT id, satid, timestamp FROM rs_casts WHERE id>=" + Offset[0] + " AND id<" + Offset[1]).ExecuteReaderRpll(); while (dr.Read()) { m_Casts[dr.GetInt32(0)] = new RS_Casts() { SatRefId = dr.GetInt32(1), TimeStamp = dr.GetInt32(2), Amount = 1 }; } dr.CloseRpll(); } catch (KeyNotFoundException ex) { Error += "rs_casts: " + ex.Message + "<br /><br />"; } // Sorting the crap for good measure m_Attempts = m_Attempts.OrderBy(x => x.Value.Start).ToDictionary(); m_Auras = m_Auras.OrderBy(x => x.Value.Gained).ToDictionary(); m_Deaths = m_Deaths.OrderBy(x => x.Value.TimeStamp).ToDictionary(); m_Dispels = m_Dispels.OrderBy(x => x.Value.TimeStamp).ToDictionary(); m_Interrupts = m_Interrupts.OrderBy(x => x.Value.TimeStamp).ToDictionary(); m_Damage = m_Damage.OrderBy(x => x.Value.TimeStamp).ToDictionary(); m_Healing = m_Healing.OrderBy(x => x.Value.TimeStamp).ToDictionary(); m_Casts = m_Casts.OrderBy(x => x.Value.TimeStamp).ToDictionary(); m_Threat = m_Threat.OrderBy(x => x.TimeStamp).ToList(); // TODO: Boss yells FinishRequestData(_Index, _Id, _Uploader); }