Example #1
0
 bool IRegionExperienceList.TryGetValue(UUID regionID, UEI experienceID, out RegionExperienceInfo info)
 {
     using (var conn = new SqlConnection(m_ConnectionString))
     {
         conn.Open();
         using (var cmd = new SqlCommand("SELECT TOP(1) * FROM regionexperiences WHERE RegionID = @regionid AND ExperienceID = @experienceid", conn))
         {
             cmd.Parameters.AddParameter("@regionid", regionID);
             cmd.Parameters.AddParameter("@experienceid", experienceID.ID);
             using (SqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     info = new RegionExperienceInfo
                     {
                         ExperienceID = new UEI(reader.GetUUID("ExperienceID")),
                         RegionID     = reader.GetUUID("RegionID"),
                         IsAllowed    = (bool)reader["IsAllowed"]
                     };
                     return(true);
                 }
             }
         }
     }
     info = default(RegionExperienceInfo);
     return(false);
 }
Example #2
0
        bool IRegionExperienceList.TryGetValue(UUID regionID, UEI experienceID, out RegionExperienceInfo info)
        {
            RwLockedDictionary <UUID, RegionExperienceInfo> exp;
            RegionExperienceInfo i_info;

            if (m_Experiences.TryGetValue(regionID, out exp) && exp.TryGetValue(experienceID.ID, out i_info))
            {
                info = new RegionExperienceInfo(i_info);
                return(true);
            }
            info = default(RegionExperienceInfo);
            return(false);
        }
Example #3
0
        void IRegionExperienceList.Store(RegionExperienceInfo info)
        {
            var vals = new Dictionary <string, object>
            {
                ["RegionID"]     = info.RegionID,
                ["ExperienceID"] = info.ExperienceID.ID,
                ["IsAllowed"]    = info.IsAllowed,
            };

            using (var conn = new SqlConnection(m_ConnectionString))
            {
                conn.Open();
                conn.ReplaceInto("regionexperiences", vals, RegionExperiencesKey);
            }
        }
        private bool CompareEntry(RegionExperienceInfo a, RegionExperienceInfo b)
        {
            var items = new List <string>();

            if (a.RegionID != b.RegionID)
            {
                items.Add("RegionID");
            }
            if (a.ExperienceID != b.ExperienceID)
            {
                items.Add("ExperienceID");
            }
            if (a.IsAllowed != b.IsAllowed)
            {
                items.Add("IsAllowed");
            }

            if (items.Count != 0)
            {
                m_Log.InfoFormat("Mismatched items: {0}", string.Join(" ", items));
            }
            return(items.Count == 0);
        }
Example #5
0
 public RegionExperienceInfo(RegionExperienceInfo info)
 {
     RegionID     = info.RegionID;
     ExperienceID = new UEI(info.ExperienceID);
     IsAllowed    = info.IsAllowed;
 }
Example #6
0
 void IRegionExperienceList.Store(RegionExperienceInfo info)
 {
     m_Experiences[info.RegionID][info.ExperienceID.ID] = new RegionExperienceInfo(info);
 }
        public override bool Run()
        {
            var regionID      = new UUID("12345678-1234-1234-1234-123456789012");
            var experienceID  = new UEI("11223344-1122-1122-1122-112233445566");
            var experienceID2 = new UEI("11223344-1122-1122-1122-112233445567");

            var testentry = new RegionExperienceInfo
            {
                RegionID     = regionID,
                ExperienceID = experienceID,
                IsAllowed    = true
            };

            RegionExperienceInfo entry;

            m_Log.Info("Testing non-existence 1A");
            if (SimulationData.RegionExperiences.TryGetValue(regionID, experienceID, out entry))
            {
                return(false);
            }

            m_Log.Info("Testing non-existence 2A");
            try
            {
                entry = SimulationData.RegionExperiences[regionID, experienceID];
                return(false);
            }
            catch (KeyNotFoundException)
            {
                /* this is the expected */
            }

            m_Log.Info("Testing non-existence 3A");
            if (SimulationData.RegionExperiences[regionID].Count != 0)
            {
                return(false);
            }

            SimulationData.RegionExperiences.Store(testentry);

            m_Log.Info("Testing existence 1A");
            if (!SimulationData.RegionExperiences.TryGetValue(regionID, experienceID, out entry))
            {
                return(false);
            }
            if (!CompareEntry(entry, testentry))
            {
                return(false);
            }

            m_Log.Info("Testing existence 2A");
            entry = SimulationData.RegionExperiences[regionID, experienceID];

            if (!CompareEntry(entry, testentry))
            {
                return(false);
            }

            m_Log.Info("Testing existence 3A");
            List <RegionExperienceInfo> entries = SimulationData.RegionExperiences[regionID];

            if (entries.Count != 1)
            {
                return(false);
            }

            if (!CompareEntry(entries[0], testentry))
            {
                return(false);
            }

            m_Log.Info("Removing entry");
            if (!SimulationData.RegionExperiences.Remove(regionID, experienceID))
            {
                return(false);
            }

            m_Log.Info("Testing that a non-existing entry on removal is false");
            if (SimulationData.RegionExperiences.Remove(regionID, experienceID))
            {
                return(false);
            }


            testentry.IsAllowed = false;

            m_Log.Info("Testing non-existence 1B");
            if (SimulationData.RegionExperiences.TryGetValue(regionID, experienceID, out entry))
            {
                return(false);
            }

            m_Log.Info("Testing non-existence 2B");
            try
            {
                entry = SimulationData.RegionExperiences[regionID, experienceID];
                return(false);
            }
            catch (KeyNotFoundException)
            {
                /* this is the expected */
            }

            m_Log.Info("Testing non-existence 3B");
            if (SimulationData.RegionExperiences[regionID].Count != 0)
            {
                return(false);
            }

            SimulationData.RegionExperiences.Store(testentry);

            m_Log.Info("Testing existence 1B");
            if (!SimulationData.RegionExperiences.TryGetValue(regionID, experienceID, out entry))
            {
                return(false);
            }
            if (!CompareEntry(entry, testentry))
            {
                return(false);
            }

            m_Log.Info("Testing existence 2B");
            entry = SimulationData.RegionExperiences[regionID, experienceID];

            if (!CompareEntry(entry, testentry))
            {
                return(false);
            }

            m_Log.Info("Testing existence 3B");
            entries = SimulationData.RegionExperiences[regionID];
            if (entries.Count != 1)
            {
                return(false);
            }

            if (!CompareEntry(entries[0], testentry))
            {
                return(false);
            }

            m_Log.Info("Removing entry");
            if (!SimulationData.RegionExperiences.Remove(regionID, experienceID))
            {
                return(false);
            }

            m_Log.Info("Testing that a non-existing entry on removal is false");
            if (SimulationData.RegionExperiences.Remove(regionID, experienceID))
            {
                return(false);
            }

            var testentry2 = new RegionExperienceInfo
            {
                RegionID     = regionID,
                ExperienceID = experienceID2,
                IsAllowed    = true
            };

            int entriescount;

            m_Log.Info("Storing two entries A");
            SimulationData.RegionExperiences.Store(testentry);
            SimulationData.RegionExperiences.Store(testentry2);

            m_Log.Info("Testing that two entries exist A");
            entriescount = SimulationData.RegionExperiences[regionID].Count;
            if (entriescount != 2)
            {
                m_Log.InfoFormat("Unexpected count {0}", entriescount);
                return(false);
            }

            m_Log.Info("Removing entry 1 A");
            if (!SimulationData.RegionExperiences.Remove(regionID, experienceID))
            {
                return(false);
            }

            m_Log.Info("Testing existence of entry 2 A");
            if (!SimulationData.RegionExperiences.TryGetValue(regionID, experienceID2, out entry))
            {
                return(false);
            }

            m_Log.Info("Removing entry 2 A");
            if (!SimulationData.RegionExperiences.Remove(regionID, experienceID2))
            {
                return(false);
            }

            m_Log.Info("Storing two entries B");
            SimulationData.RegionExperiences.Store(testentry);
            SimulationData.RegionExperiences.Store(testentry2);

            m_Log.Info("Testing that two entries exist");
            entriescount = SimulationData.RegionExperiences[regionID].Count;
            if (entriescount != 2)
            {
                m_Log.InfoFormat("Unexpected count {0}", entriescount);
                return(false);
            }

            m_Log.Info("Removing all entries B");
            SimulationData.RegionExperiences.RemoveRegion(regionID);

            m_Log.Info("Testing that no entries exist B");
            entriescount = SimulationData.RegionExperiences[regionID].Count;
            if (entriescount != 0)
            {
                return(false);
            }
            return(true);
        }