Example #1
0
 // 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;
 }
Example #2
0
        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";
        }
Example #3
0
        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?!!
        }
Example #4
0
        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);
        }