diff options
author | mingchen | 2007-07-18 23:15:08 +0000 |
---|---|---|
committer | mingchen | 2007-07-18 23:15:08 +0000 |
commit | 222becc8795d8abd8263c8abf8212de91faa4748 (patch) | |
tree | ac0eb1b420c2f60975b759296c94813f41925798 /OpenSim/Framework/General/Types/RegionInfo.cs | |
parent | * Reverting 1371 (diff) | |
download | opensim-SC_OLD-222becc8795d8abd8263c8abf8212de91faa4748.zip opensim-SC_OLD-222becc8795d8abd8263c8abf8212de91faa4748.tar.gz opensim-SC_OLD-222becc8795d8abd8263c8abf8212de91faa4748.tar.bz2 opensim-SC_OLD-222becc8795d8abd8263c8abf8212de91faa4748.tar.xz |
*New Configuration System, much easier and less buggy compared to the original system in place
*View RegionInfo.cs for an example on how it works!
*This hopefully copies all the files over, but who knows :)
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/General/Types/RegionInfo.cs | 244 |
1 files changed, 66 insertions, 178 deletions
diff --git a/OpenSim/Framework/General/Types/RegionInfo.cs b/OpenSim/Framework/General/Types/RegionInfo.cs index 251d7f8..b7c35c7 100644 --- a/OpenSim/Framework/General/Types/RegionInfo.cs +++ b/OpenSim/Framework/General/Types/RegionInfo.cs | |||
@@ -34,6 +34,8 @@ using OpenSim.Framework.Console; | |||
34 | using OpenSim.Framework.Interfaces; | 34 | using OpenSim.Framework.Interfaces; |
35 | using OpenSim.Framework.Utilities; | 35 | using OpenSim.Framework.Utilities; |
36 | 36 | ||
37 | using OpenSim.Framework.Configuration; | ||
38 | |||
37 | namespace OpenSim.Framework.Types | 39 | namespace OpenSim.Framework.Types |
38 | { | 40 | { |
39 | public class RegionInfo | 41 | public class RegionInfo |
@@ -71,11 +73,11 @@ namespace OpenSim.Framework.Types | |||
71 | } | 73 | } |
72 | 74 | ||
73 | } | 75 | } |
74 | 76 | ||
75 | return new IPEndPoint(ia, m_internalEndPoint.Port); | 77 | return new IPEndPoint(ia, m_internalEndPoint.Port); |
76 | } | 78 | } |
77 | } | 79 | } |
78 | 80 | ||
79 | private string m_externalHostName; | 81 | private string m_externalHostName; |
80 | public string ExternalHostName | 82 | public string ExternalHostName |
81 | { | 83 | { |
@@ -117,7 +119,6 @@ namespace OpenSim.Framework.Types | |||
117 | } | 119 | } |
118 | } | 120 | } |
119 | 121 | ||
120 | // Only used for remote regions , ie ones not in the current instance | ||
121 | private uint m_remotingPort; | 122 | private uint m_remotingPort; |
122 | public uint RemotingPort | 123 | public uint RemotingPort |
123 | { | 124 | { |
@@ -142,14 +143,18 @@ namespace OpenSim.Framework.Types | |||
142 | 143 | ||
143 | public EstateSettings estateSettings; | 144 | public EstateSettings estateSettings; |
144 | 145 | ||
145 | public RegionInfo() | 146 | public ConfigurationMember configMember; |
147 | public RegionInfo(string description, string filename) | ||
146 | { | 148 | { |
147 | estateSettings = new EstateSettings(); | 149 | estateSettings = new EstateSettings(); |
150 | configMember = new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration); | ||
151 | configMember.performConfigurationRetrieve(); | ||
148 | } | 152 | } |
149 | 153 | ||
150 | public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) | 154 | public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) |
151 | : this() | ||
152 | { | 155 | { |
156 | |||
157 | estateSettings = new EstateSettings(); | ||
153 | m_regionLocX = regionLocX; | 158 | m_regionLocX = regionLocX; |
154 | m_regionLocY = regionLocY; | 159 | m_regionLocY = regionLocY; |
155 | 160 | ||
@@ -157,187 +162,70 @@ namespace OpenSim.Framework.Types | |||
157 | m_externalHostName = externalUri; | 162 | m_externalHostName = externalUri; |
158 | } | 163 | } |
159 | 164 | ||
160 | public void InitConfig(bool sandboxMode, IGenericConfig configData) | 165 | public void loadConfigurationOptions() |
161 | { | ||
162 | this.isSandbox = sandboxMode; | ||
163 | try | ||
164 | { | ||
165 | string attri = ""; | ||
166 | |||
167 | // Sim UUID | ||
168 | string simId = configData.GetAttribute("SimUUID"); | ||
169 | if (String.IsNullOrEmpty( simId )) | ||
170 | { | ||
171 | this.SimUUID = LLUUID.Random(); | ||
172 | } | ||
173 | else | ||
174 | { | ||
175 | this.SimUUID = new LLUUID(simId); | ||
176 | } | ||
177 | configData.SetAttribute("SimUUID", this.SimUUID.ToString()); | ||
178 | |||
179 | this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name"); | ||
180 | |||
181 | //m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X"); | ||
182 | |||
183 | attri = ""; | ||
184 | attri = configData.GetAttribute("SimLocationX"); | ||
185 | if (attri == "") | ||
186 | { | ||
187 | string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000"); | ||
188 | configData.SetAttribute("SimLocationX", location); | ||
189 | m_regionLocX = (uint)Convert.ToUInt32(location); | ||
190 | } | ||
191 | else | ||
192 | { | ||
193 | m_regionLocX = (uint)Convert.ToUInt32(attri); | ||
194 | } | ||
195 | // Sim/Grid location Y | ||
196 | attri = ""; | ||
197 | attri = configData.GetAttribute("SimLocationY"); | ||
198 | if (attri == "") | ||
199 | { | ||
200 | string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000"); | ||
201 | configData.SetAttribute("SimLocationY", location); | ||
202 | m_regionLocY = (uint)Convert.ToUInt32(location); | ||
203 | } | ||
204 | else | ||
205 | { | ||
206 | m_regionLocY = (uint)Convert.ToUInt32(attri); | ||
207 | } | ||
208 | |||
209 | m_regionHandle = null; | ||
210 | |||
211 | this.DataStore = GetString(configData, "Datastore", "localworld.yap", "Filename for local storage"); | ||
212 | |||
213 | string internalAddress = GetString(configData, "InternalIPAddress", "0.0.0.0", "Internal IP Address for UDP client connections").ToString(); | ||
214 | int internalPort = GetIPPort(configData, "InternalIPPort", "9000", "Internal IP Port for UDP client connections"); | ||
215 | IPAddress internalIPAddress = Util.GetHostFromDNS(internalAddress); | ||
216 | m_internalEndPoint = new IPEndPoint(internalIPAddress, internalPort); | ||
217 | |||
218 | m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name"); | ||
219 | |||
220 | estateSettings.terrainFile = | ||
221 | GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File"); | ||
222 | |||
223 | attri = ""; | ||
224 | attri = configData.GetAttribute("TerrainMultiplier"); | ||
225 | if (attri == "") | ||
226 | { | ||
227 | string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0"); | ||
228 | this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture); | ||
229 | configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString()); | ||
230 | } | ||
231 | else | ||
232 | { | ||
233 | this.estateSettings.terrainMultiplier = Convert.ToDouble(attri); | ||
234 | } | ||
235 | |||
236 | attri = ""; | ||
237 | attri = configData.GetAttribute("MasterAvatarFirstName"); | ||
238 | if (attri == "") | ||
239 | { | ||
240 | this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test"); | ||
241 | |||
242 | configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName); | ||
243 | } | ||
244 | else | ||
245 | { | ||
246 | this.MasterAvatarFirstName = attri; | ||
247 | } | ||
248 | |||
249 | attri = ""; | ||
250 | attri = configData.GetAttribute("MasterAvatarLastName"); | ||
251 | if (attri == "") | ||
252 | { | ||
253 | this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User"); | ||
254 | |||
255 | configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName); | ||
256 | } | ||
257 | else | ||
258 | { | ||
259 | this.MasterAvatarLastName = attri; | ||
260 | } | ||
261 | |||
262 | if (isSandbox) //Sandbox Mode Specific Settings | ||
263 | { | ||
264 | attri = ""; | ||
265 | attri = configData.GetAttribute("MasterAvatarSandboxPassword"); | ||
266 | if (attri == "") | ||
267 | { | ||
268 | this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test"); | ||
269 | |||
270 | //Should I store this? | ||
271 | configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword); | ||
272 | } | ||
273 | else | ||
274 | { | ||
275 | this.MasterAvatarSandboxPassword = attri; | ||
276 | } | ||
277 | } | ||
278 | |||
279 | configData.Commit(); | ||
280 | } | ||
281 | catch (Exception e) | ||
282 | { | ||
283 | MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured"); | ||
284 | MainLog.Instance.Warn(e.ToString()); | ||
285 | } | ||
286 | |||
287 | MainLog.Instance.Verbose("Sim settings loaded:"); | ||
288 | MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated()); | ||
289 | MainLog.Instance.Verbose("Name: " + this.RegionName); | ||
290 | MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]"); | ||
291 | MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString()); | ||
292 | MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() ); | ||
293 | MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString()); | ||
294 | |||
295 | } | ||
296 | |||
297 | private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4) | ||
298 | { | 166 | { |
299 | throw new Exception("The method or operation is not implemented."); | 167 | configMember.addConfigurationOption("sim_UUID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, "UUID of Simulator (Default is recommended, random UUID)", LLUUID.Random().ToString()); |
300 | } | 168 | configMember.addConfigurationOption("sim_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Simulator Name", "OpenSim Test"); |
301 | 169 | configMember.addConfigurationOption("sim_location_x", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Grid Location (X Axis)", "1000"); | |
302 | private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt) | 170 | configMember.addConfigurationOption("sim_location_y", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Grid Location (Y Axis)", "1000"); |
303 | { | 171 | configMember.addConfigurationOption("datastore", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Filename for local storage", "localworld.yap"); |
304 | string s = configData.GetAttribute(attrName); | 172 | configMember.addConfigurationOption("internal_ip_address", ConfigurationOption.ConfigurationTypes.TYPE_IP_ADDRESS, "Internal IP Address for incoming UDP client connections", "0.0.0.0"); |
173 | configMember.addConfigurationOption("internal_ip_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32, "Internal IP Port for incoming UDP client connections", "9000"); | ||
174 | configMember.addConfigurationOption("external_host_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "External Host Name", "127.0.0.1"); | ||
175 | configMember.addConfigurationOption("terrain_file", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Default Terrain File", "default.r32"); | ||
176 | configMember.addConfigurationOption("terrain_multiplier", ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, "Terrain Height Multiplier", "60.0"); | ||
177 | configMember.addConfigurationOption("master_avatar_first", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "First Name of Master Avatar", "Test"); | ||
178 | configMember.addConfigurationOption("master_avatar_last", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Last Name of Master Avatar", "User"); | ||
179 | configMember.addConfigurationOption("master_avatar_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "(Sandbox Mode Only)Password for Master Avatar account", "test"); | ||
305 | 180 | ||
306 | if (String.IsNullOrEmpty( s )) | ||
307 | { | ||
308 | s = MainLog.Instance.CmdPrompt(prompt, defaultvalue); | ||
309 | configData.SetAttribute(attrName, s ); | ||
310 | } | ||
311 | return s; | ||
312 | } | 181 | } |
313 | 182 | ||
314 | private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt) | 183 | public void handleIncomingConfiguration(string configuration_key, object configuration_result) |
315 | { | 184 | { |
316 | string addressStr = configData.GetAttribute(attrName); | 185 | switch (configuration_key) |
317 | |||
318 | IPAddress address; | ||
319 | |||
320 | if (!IPAddress.TryParse(addressStr, out address)) | ||
321 | { | 186 | { |
322 | address = MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue); | 187 | case "sim_UUID": |
323 | configData.SetAttribute(attrName, address.ToString()); | 188 | this.SimUUID = (LLUUID)configuration_result; |
189 | break; | ||
190 | case "sim_name": | ||
191 | this.RegionName = (string)configuration_result; | ||
192 | break; | ||
193 | case "sim_location_x": | ||
194 | this.m_regionLocX = (uint)configuration_result; | ||
195 | break; | ||
196 | case "sim_location_y": | ||
197 | this.m_regionLocY = (uint)configuration_result; | ||
198 | break; | ||
199 | case "datastore": | ||
200 | this.DataStore = (string)configuration_result; | ||
201 | break; | ||
202 | case "internal_ip_address": | ||
203 | IPAddress address = (IPAddress)configuration_result; | ||
204 | this.m_internalEndPoint = new IPEndPoint(address, 0); | ||
205 | break; | ||
206 | case "internal_ip_port": | ||
207 | this.m_internalEndPoint.Port = (int)configuration_result; | ||
208 | break; | ||
209 | case "external_host_name": | ||
210 | this.m_externalHostName = (string)configuration_result; | ||
211 | break; | ||
212 | case "terrain_file": | ||
213 | this.estateSettings.terrainFile = (string)configuration_result; | ||
214 | break; | ||
215 | case "terrain_multiplier": | ||
216 | this.estateSettings.terrainMultiplier = (double)configuration_result; | ||
217 | break; | ||
218 | case "master_avatar_first": | ||
219 | this.MasterAvatarFirstName = (string)configuration_result; | ||
220 | break; | ||
221 | case "master_avatar_last": | ||
222 | this.MasterAvatarLastName = (string)configuration_result; | ||
223 | break; | ||
224 | case "master_avatar_pass": | ||
225 | this.MasterAvatarSandboxPassword = (string)configuration_result; | ||
226 | break; | ||
324 | } | 227 | } |
325 | return address; | ||
326 | } | 228 | } |
327 | |||
328 | private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt) | ||
329 | { | ||
330 | string portStr = configData.GetAttribute(attrName); | ||
331 | 229 | ||
332 | int port; | ||
333 | |||
334 | if (!int.TryParse(portStr, out port)) | ||
335 | { | ||
336 | port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue); | ||
337 | configData.SetAttribute(attrName, port.ToString()); | ||
338 | } | ||
339 | |||
340 | return port; | ||
341 | } | ||
342 | } | 230 | } |
343 | } | 231 | } |