From 28d6705358c2e383fb46c57f064de4dcff144e33 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 9 Jan 2010 20:46:32 +0000 Subject: Preliminary work on the new default region setting mechanism --- OpenSim/Data/IRegionData.cs | 11 +++++++++++ OpenSim/Data/MSSQL/MSSQLRegionData.cs | 10 ++++++++++ OpenSim/Data/MySQL/MySQLRegionData.cs | 26 ++++++++++++++++++++++++++ OpenSim/Data/MySQL/Resources/005_GridStore.sql | 6 ++++++ OpenSim/Data/Null/NullRegionData.cs | 10 ++++++++++ OpenSim/Data/RegionProfileData.cs | 1 - 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 OpenSim/Data/MySQL/Resources/005_GridStore.sql (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/IRegionData.cs b/OpenSim/Data/IRegionData.cs index 7a607ab..b8de1d8 100644 --- a/OpenSim/Data/IRegionData.cs +++ b/OpenSim/Data/IRegionData.cs @@ -60,5 +60,16 @@ namespace OpenSim.Data bool Delete(UUID regionID); + List GetDefaultRegions(UUID scopeID); + List GetFallbackRegions(UUID scopeID, int x, int y); + } + + [Flags] + public enum RegionFlags : int + { + DefaultRegion = 1, // Used for new Rez. Random if multiple defined + FallbackRegion = 2, // Regions we redirect to when the destination is down + RegionOnline = 4, // Set when a region comes online, unset when it unregisters and DeleteOnUnregister is false + NoDirectLogin = 8 // Region unavailable for direct logins (by name) } } diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs index a898aab..fbfb78e 100644 --- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs +++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs @@ -307,5 +307,15 @@ namespace OpenSim.Data.MSSQL } return false; } + + public List GetDefaultRegions(UUID scopeID) + { + return null; + } + + public List GetFallbackRegions(UUID scopeID, int x, int y) + { + return null; + } } } diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index b0075e8..d045f61 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs @@ -274,5 +274,31 @@ namespace OpenSim.Data.MySQL return false; } + public List GetDefaultRegions(UUID scopeID) + { + string command = "select * from `"+m_Realm+"` where (flags & 1) <> 0"; + if (scopeID != UUID.Zero) + command += " and ScopeID = ?scopeID"; + + MySqlCommand cmd = new MySqlCommand(command); + + cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString()); + + return RunCommand(cmd); + } + + public List GetFallbackRegions(UUID scopeID, int x, int y) + { + string command = "select * from `"+m_Realm+"` where (flags & 2) <> 0"; + if (scopeID != UUID.Zero) + command += " and ScopeID = ?scopeID"; + + MySqlCommand cmd = new MySqlCommand(command); + + cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString()); + + // TODO: distance-sort results + return RunCommand(cmd); + } } } diff --git a/OpenSim/Data/MySQL/Resources/005_GridStore.sql b/OpenSim/Data/MySQL/Resources/005_GridStore.sql new file mode 100644 index 0000000..835ba89 --- /dev/null +++ b/OpenSim/Data/MySQL/Resources/005_GridStore.sql @@ -0,0 +1,6 @@ +BEGIN; + +ALTER TABLE `regions` ADD COLUMN `flags` integer NOT NULL DEFAULT 0; +CREATE INDEX flags ON regions(flags); + +COMMIT; diff --git a/OpenSim/Data/Null/NullRegionData.cs b/OpenSim/Data/Null/NullRegionData.cs index e8263ea..92db87a 100644 --- a/OpenSim/Data/Null/NullRegionData.cs +++ b/OpenSim/Data/Null/NullRegionData.cs @@ -130,5 +130,15 @@ namespace OpenSim.Data.Null return true; } + + public List GetDefaultRegions(UUID scopeID) + { + return null; + } + + public List GetFallbackRegions(UUID scopeID, int x, int y) + { + return null; + } } } diff --git a/OpenSim/Data/RegionProfileData.cs b/OpenSim/Data/RegionProfileData.cs index 86d7f6b..90713d2 100644 --- a/OpenSim/Data/RegionProfileData.cs +++ b/OpenSim/Data/RegionProfileData.cs @@ -136,7 +136,6 @@ namespace OpenSim.Data /// public uint maturity; - //Data Wrappers public string RegionName { -- cgit v1.1