diff options
Diffstat (limited to 'OpenSim/Framework/General/ConfigurationMember.cs')
-rw-r--r-- | OpenSim/Framework/General/ConfigurationMember.cs | 110 |
1 files changed, 68 insertions, 42 deletions
diff --git a/OpenSim/Framework/General/ConfigurationMember.cs b/OpenSim/Framework/General/ConfigurationMember.cs index c71982a..5883d73 100644 --- a/OpenSim/Framework/General/ConfigurationMember.cs +++ b/OpenSim/Framework/General/ConfigurationMember.cs | |||
@@ -27,22 +27,19 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Reflection; | ||
31 | using System.Collections; | ||
32 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
33 | using System.Text; | 31 | using System.Globalization; |
34 | using System.Net; | 32 | using System.Net; |
35 | 33 | using System.Reflection; | |
36 | using libsecondlife; | 34 | using libsecondlife; |
37 | |||
38 | using OpenSim.Framework.Console; | 35 | using OpenSim.Framework.Console; |
39 | using System.Globalization; | ||
40 | 36 | ||
41 | namespace OpenSim.Framework | 37 | namespace OpenSim.Framework |
42 | { | 38 | { |
43 | public class ConfigurationMember | 39 | public class ConfigurationMember |
44 | { | 40 | { |
45 | public delegate bool ConfigurationOptionResult(string configuration_key, object configuration_result); | 41 | public delegate bool ConfigurationOptionResult(string configuration_key, object configuration_result); |
42 | |||
46 | public delegate void ConfigurationOptionsLoad(); | 43 | public delegate void ConfigurationOptionsLoad(); |
47 | 44 | ||
48 | private List<ConfigurationOption> configurationOptions = new List<ConfigurationOption>(); | 45 | private List<ConfigurationOption> configurationOptions = new List<ConfigurationOption>(); |
@@ -53,22 +50,26 @@ namespace OpenSim.Framework | |||
53 | private ConfigurationOptionResult resultFunction; | 50 | private ConfigurationOptionResult resultFunction; |
54 | 51 | ||
55 | private IGenericConfig configurationPlugin = null; | 52 | private IGenericConfig configurationPlugin = null; |
53 | |||
56 | /// <summary> | 54 | /// <summary> |
57 | /// This is the default configuration DLL loaded | 55 | /// This is the default configuration DLL loaded |
58 | /// </summary> | 56 | /// </summary> |
59 | private string configurationPluginFilename = "OpenSim.Framework.Configuration.XML.dll"; | 57 | private string configurationPluginFilename = "OpenSim.Framework.Configuration.XML.dll"; |
60 | public ConfigurationMember(string configuration_filename, string configuration_description, ConfigurationOptionsLoad load_function, ConfigurationOptionResult result_function) | 58 | |
59 | public ConfigurationMember(string configuration_filename, string configuration_description, | ||
60 | ConfigurationOptionsLoad load_function, ConfigurationOptionResult result_function) | ||
61 | { | 61 | { |
62 | this.configurationFilename = configuration_filename; | 62 | configurationFilename = configuration_filename; |
63 | this.configurationDescription = configuration_description; | 63 | configurationDescription = configuration_description; |
64 | this.loadFunction = load_function; | 64 | loadFunction = load_function; |
65 | this.resultFunction = result_function; | 65 | resultFunction = result_function; |
66 | } | 66 | } |
67 | 67 | ||
68 | public void setConfigurationFilename(string filename) | 68 | public void setConfigurationFilename(string filename) |
69 | { | 69 | { |
70 | configurationFilename = filename; | 70 | configurationFilename = filename; |
71 | } | 71 | } |
72 | |||
72 | public void setConfigurationDescription(string desc) | 73 | public void setConfigurationDescription(string desc) |
73 | { | 74 | { |
74 | configurationDescription = desc; | 75 | configurationDescription = desc; |
@@ -83,7 +84,11 @@ namespace OpenSim.Framework | |||
83 | { | 84 | { |
84 | configurationPluginFilename = dll_filename; | 85 | configurationPluginFilename = dll_filename; |
85 | } | 86 | } |
86 | public void addConfigurationOption(string configuration_key, ConfigurationOption.ConfigurationTypes configuration_type, string configuration_question, string configuration_default, bool use_default_no_prompt) | 87 | |
88 | public void addConfigurationOption(string configuration_key, | ||
89 | ConfigurationOption.ConfigurationTypes configuration_type, | ||
90 | string configuration_question, string configuration_default, | ||
91 | bool use_default_no_prompt) | ||
87 | { | 92 | { |
88 | ConfigurationOption configOption = new ConfigurationOption(); | 93 | ConfigurationOption configOption = new ConfigurationOption(); |
89 | configOption.configurationKey = configuration_key; | 94 | configOption.configurationKey = configuration_key; |
@@ -92,7 +97,8 @@ namespace OpenSim.Framework | |||
92 | configOption.configurationType = configuration_type; | 97 | configOption.configurationType = configuration_type; |
93 | configOption.configurationUseDefaultNoPrompt = use_default_no_prompt; | 98 | configOption.configurationUseDefaultNoPrompt = use_default_no_prompt; |
94 | 99 | ||
95 | if ((configuration_key != "" && configuration_question != "") || (configuration_key != "" && use_default_no_prompt)) | 100 | if ((configuration_key != "" && configuration_question != "") || |
101 | (configuration_key != "" && use_default_no_prompt)) | ||
96 | { | 102 | { |
97 | if (!configurationOptions.Contains(configOption)) | 103 | if (!configurationOptions.Contains(configOption)) |
98 | { | 104 | { |
@@ -101,32 +107,37 @@ namespace OpenSim.Framework | |||
101 | } | 107 | } |
102 | else | 108 | else |
103 | { | 109 | { |
104 | MainLog.Instance.Notice("Required fields for adding a configuration option is invalid. Will not add this option (" + configuration_key + ")"); | 110 | MainLog.Instance.Notice( |
111 | "Required fields for adding a configuration option is invalid. Will not add this option (" + | ||
112 | configuration_key + ")"); | ||
105 | } | 113 | } |
106 | } | 114 | } |
107 | 115 | ||
108 | public void performConfigurationRetrieve() | 116 | public void performConfigurationRetrieve() |
109 | { | 117 | { |
110 | configurationPlugin = this.LoadConfigDll(configurationPluginFilename); | 118 | configurationPlugin = LoadConfigDll(configurationPluginFilename); |
111 | configurationOptions.Clear(); | 119 | configurationOptions.Clear(); |
112 | if(loadFunction == null) | 120 | if (loadFunction == null) |
113 | { | 121 | { |
114 | MainLog.Instance.Error("Load Function for '" + this.configurationDescription + "' is null. Refusing to run configuration."); | 122 | MainLog.Instance.Error("Load Function for '" + configurationDescription + |
123 | "' is null. Refusing to run configuration."); | ||
115 | return; | 124 | return; |
116 | } | 125 | } |
117 | 126 | ||
118 | if(resultFunction == null) | 127 | if (resultFunction == null) |
119 | { | 128 | { |
120 | MainLog.Instance.Error("Result Function for '" + this.configurationDescription + "' is null. Refusing to run configuration."); | 129 | MainLog.Instance.Error("Result Function for '" + configurationDescription + |
130 | "' is null. Refusing to run configuration."); | ||
121 | return; | 131 | return; |
122 | } | 132 | } |
123 | 133 | ||
124 | MainLog.Instance.Verbose("Calling Configuration Load Function..."); | 134 | MainLog.Instance.Verbose("Calling Configuration Load Function..."); |
125 | this.loadFunction(); | 135 | loadFunction(); |
126 | 136 | ||
127 | if(configurationOptions.Count <= 0) | 137 | if (configurationOptions.Count <= 0) |
128 | { | 138 | { |
129 | MainLog.Instance.Error("No configuration options were specified for '" + this.configurationOptions + "'. Refusing to continue configuration."); | 139 | MainLog.Instance.Error("No configuration options were specified for '" + configurationOptions + |
140 | "'. Refusing to continue configuration."); | ||
130 | return; | 141 | return; |
131 | } | 142 | } |
132 | 143 | ||
@@ -157,7 +168,6 @@ namespace OpenSim.Framework | |||
157 | bool ignoreNextFromConfig = false; | 168 | bool ignoreNextFromConfig = false; |
158 | while (convertSuccess == false) | 169 | while (convertSuccess == false) |
159 | { | 170 | { |
160 | |||
161 | string console_result = ""; | 171 | string console_result = ""; |
162 | string attribute = null; | 172 | string attribute = null; |
163 | if (useFile) | 173 | if (useFile) |
@@ -180,16 +190,20 @@ namespace OpenSim.Framework | |||
180 | } | 190 | } |
181 | else | 191 | else |
182 | { | 192 | { |
183 | |||
184 | if (configurationDescription.Trim() != "") | 193 | if (configurationDescription.Trim() != "") |
185 | { | 194 | { |
186 | console_result = MainLog.Instance.CmdPrompt(configurationDescription + ": " + configOption.configurationQuestion, configOption.configurationDefault); | 195 | console_result = |
196 | MainLog.Instance.CmdPrompt( | ||
197 | configurationDescription + ": " + configOption.configurationQuestion, | ||
198 | configOption.configurationDefault); | ||
187 | } | 199 | } |
188 | else | 200 | else |
189 | { | 201 | { |
190 | console_result = MainLog.Instance.CmdPrompt(configOption.configurationQuestion, configOption.configurationDefault); | 202 | console_result = |
203 | MainLog.Instance.CmdPrompt(configOption.configurationQuestion, | ||
204 | configOption.configurationDefault); | ||
191 | } | 205 | } |
192 | } | 206 | } |
193 | } | 207 | } |
194 | else | 208 | else |
195 | { | 209 | { |
@@ -252,7 +266,6 @@ namespace OpenSim.Framework | |||
252 | { | 266 | { |
253 | convertSuccess = true; | 267 | convertSuccess = true; |
254 | return_result = intResult; | 268 | return_result = intResult; |
255 | |||
256 | } | 269 | } |
257 | errorMessage = "a signed 32 bit integer (int)"; | 270 | errorMessage = "a signed 32 bit integer (int)"; |
258 | break; | 271 | break; |
@@ -307,7 +320,6 @@ namespace OpenSim.Framework | |||
307 | { | 320 | { |
308 | convertSuccess = true; | 321 | convertSuccess = true; |
309 | return_result = uintResult; | 322 | return_result = uintResult; |
310 | |||
311 | } | 323 | } |
312 | errorMessage = "an unsigned 32 bit integer (uint)"; | 324 | errorMessage = "an unsigned 32 bit integer (uint)"; |
313 | break; | 325 | break; |
@@ -322,7 +334,9 @@ namespace OpenSim.Framework | |||
322 | break; | 334 | break; |
323 | case ConfigurationOption.ConfigurationTypes.TYPE_FLOAT: | 335 | case ConfigurationOption.ConfigurationTypes.TYPE_FLOAT: |
324 | float floatResult; | 336 | float floatResult; |
325 | if (float.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out floatResult)) | 337 | if ( |
338 | float.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, | ||
339 | out floatResult)) | ||
326 | { | 340 | { |
327 | convertSuccess = true; | 341 | convertSuccess = true; |
328 | return_result = floatResult; | 342 | return_result = floatResult; |
@@ -331,7 +345,9 @@ namespace OpenSim.Framework | |||
331 | break; | 345 | break; |
332 | case ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE: | 346 | case ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE: |
333 | double doubleResult; | 347 | double doubleResult; |
334 | if (Double.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out doubleResult)) | 348 | if ( |
349 | Double.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, | ||
350 | out doubleResult)) | ||
335 | { | 351 | { |
336 | convertSuccess = true; | 352 | convertSuccess = true; |
337 | return_result = doubleResult; | 353 | return_result = doubleResult; |
@@ -348,9 +364,10 @@ namespace OpenSim.Framework | |||
348 | } | 364 | } |
349 | 365 | ||
350 | 366 | ||
351 | if (!this.resultFunction(configOption.configurationKey, return_result)) | 367 | if (!resultFunction(configOption.configurationKey, return_result)) |
352 | { | 368 | { |
353 | Console.MainLog.Instance.Notice("The handler for the last configuration option denied that input, please try again."); | 369 | MainLog.Instance.Notice( |
370 | "The handler for the last configuration option denied that input, please try again."); | ||
354 | convertSuccess = false; | 371 | convertSuccess = false; |
355 | ignoreNextFromConfig = true; | 372 | ignoreNextFromConfig = true; |
356 | } | 373 | } |
@@ -359,19 +376,27 @@ namespace OpenSim.Framework | |||
359 | { | 376 | { |
360 | if (configOption.configurationUseDefaultNoPrompt) | 377 | if (configOption.configurationUseDefaultNoPrompt) |
361 | { | 378 | { |
362 | MainLog.Instance.Error("CONFIG", string.Format("[{3}]:[{1}] is not valid default for parameter [{0}].\nThe configuration result must be parsable to {2}.\n", configOption.configurationKey, console_result, errorMessage, configurationFilename)); | 379 | MainLog.Instance.Error("CONFIG", |
380 | string.Format( | ||
381 | "[{3}]:[{1}] is not valid default for parameter [{0}].\nThe configuration result must be parsable to {2}.\n", | ||
382 | configOption.configurationKey, console_result, errorMessage, | ||
383 | configurationFilename)); | ||
363 | convertSuccess = true; | 384 | convertSuccess = true; |
364 | } | 385 | } |
365 | else | 386 | else |
366 | { | 387 | { |
367 | MainLog.Instance.Warn("CONFIG", string.Format("[{3}]:[{1}] is not a valid value [{0}].\nThe configuration result must be parsable to {2}.\n", configOption.configurationKey, console_result, errorMessage, configurationFilename)); | 388 | MainLog.Instance.Warn("CONFIG", |
389 | string.Format( | ||
390 | "[{3}]:[{1}] is not a valid value [{0}].\nThe configuration result must be parsable to {2}.\n", | ||
391 | configOption.configurationKey, console_result, errorMessage, | ||
392 | configurationFilename)); | ||
368 | ignoreNextFromConfig = true; | 393 | ignoreNextFromConfig = true; |
369 | } | 394 | } |
370 | } | 395 | } |
371 | } | 396 | } |
372 | } | 397 | } |
373 | 398 | ||
374 | if(useFile) | 399 | if (useFile) |
375 | { | 400 | { |
376 | configurationPlugin.Commit(); | 401 | configurationPlugin.Commit(); |
377 | configurationPlugin.Close(); | 402 | configurationPlugin.Close(); |
@@ -393,7 +418,8 @@ namespace OpenSim.Framework | |||
393 | 418 | ||
394 | if (typeInterface != null) | 419 | if (typeInterface != null) |
395 | { | 420 | { |
396 | plug = (IGenericConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | 421 | plug = |
422 | (IGenericConfig) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||
397 | } | 423 | } |
398 | } | 424 | } |
399 | } | 425 | } |
@@ -405,10 +431,10 @@ namespace OpenSim.Framework | |||
405 | 431 | ||
406 | public void forceSetConfigurationOption(string configuration_key, string configuration_value) | 432 | public void forceSetConfigurationOption(string configuration_key, string configuration_value) |
407 | { | 433 | { |
408 | this.configurationPlugin.LoadData(); | 434 | configurationPlugin.LoadData(); |
409 | this.configurationPlugin.SetAttribute(configuration_key, configuration_value); | 435 | configurationPlugin.SetAttribute(configuration_key, configuration_value); |
410 | this.configurationPlugin.Commit(); | 436 | configurationPlugin.Commit(); |
411 | this.configurationPlugin.Close(); | 437 | configurationPlugin.Close(); |
412 | } | 438 | } |
413 | } | 439 | } |
414 | } | 440 | } \ No newline at end of file |