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); }
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); }
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); }
public RegionExperienceInfo(RegionExperienceInfo info) { RegionID = info.RegionID; ExperienceID = new UEI(info.ExperienceID); IsAllowed = info.IsAllowed; }
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); }