Merge branch 'justincc-master'

master-beforevarregion
Justin Clark-Casey (justincc) 2014-01-28 00:23:10 +00:00
commit cd35d298fa
4 changed files with 76 additions and 25 deletions

View File

@ -139,12 +139,29 @@ namespace OpenSim
} }
} }
m_config = new OpenSimConfigSource();
m_config.Source = new IniConfigSource();
m_config.Source.Merge(DefaultConfig());
m_log.Info("[CONFIG]: Reading configuration settings");
for (int i = 0 ; i < sources.Count ; i++)
{
if (ReadConfig(m_config, sources[i]))
{
iniFileExists = true;
AddIncludes(m_config, sources);
}
}
// Override distro settings with contents of inidirectory
string iniDirName = startupConfig.GetString("inidirectory", "config"); string iniDirName = startupConfig.GetString("inidirectory", "config");
string iniDirPath = Path.Combine(Util.configDir(), iniDirName); string iniDirPath = Path.Combine(Util.configDir(), iniDirName);
if (Directory.Exists(iniDirPath)) if (Directory.Exists(iniDirPath))
{ {
m_log.InfoFormat("Searching folder {0} for config ini files", iniDirPath); m_log.InfoFormat("[CONFIG]: Searching folder {0} for config ini files", iniDirPath);
List<string> overrideSources = new List<string>();
string[] fileEntries = Directory.GetFiles(iniDirName); string[] fileEntries = Directory.GetFiles(iniDirName);
foreach (string filePath in fileEntries) foreach (string filePath in fileEntries)
@ -152,33 +169,38 @@ namespace OpenSim
if (Path.GetExtension(filePath).ToLower() == ".ini") if (Path.GetExtension(filePath).ToLower() == ".ini")
{ {
if (!sources.Contains(Path.GetFullPath(filePath))) if (!sources.Contains(Path.GetFullPath(filePath)))
{
overrideSources.Add(Path.GetFullPath(filePath));
// put it in sources too, to avoid circularity
sources.Add(Path.GetFullPath(filePath)); sources.Add(Path.GetFullPath(filePath));
} }
} }
} }
m_config = new OpenSimConfigSource();
m_config.Source = new IniConfigSource();
m_config.Source.Merge(DefaultConfig());
m_log.Info("[CONFIG]: Reading configuration settings"); if (overrideSources.Count > 0)
{
OpenSimConfigSource overrideConfig = new OpenSimConfigSource();
overrideConfig.Source = new IniConfigSource();
for (int i = 0 ; i < overrideSources.Count ; i++)
{
if (ReadConfig(overrideConfig, overrideSources[i]))
{
iniFileExists = true;
AddIncludes(overrideConfig, overrideSources);
}
}
m_config.Source.Merge(overrideConfig.Source);
}
}
if (sources.Count == 0) if (sources.Count == 0)
{ {
m_log.FatalFormat("[CONFIG]: Could not load any configuration"); m_log.FatalFormat("[CONFIG]: Could not load any configuration");
Environment.Exit(1); Environment.Exit(1);
} }
else if (!iniFileExists)
for (int i = 0 ; i < sources.Count ; i++)
{
if (ReadConfig(sources[i]))
{
iniFileExists = true;
AddIncludes(sources);
}
}
if (!iniFileExists)
{ {
m_log.FatalFormat("[CONFIG]: Could not load any configuration"); m_log.FatalFormat("[CONFIG]: Could not load any configuration");
m_log.FatalFormat("[CONFIG]: Configuration exists, but there was an error loading it!"); m_log.FatalFormat("[CONFIG]: Configuration exists, but there was an error loading it!");
@ -214,10 +236,10 @@ namespace OpenSim
/// Adds the included files as ini configuration files /// Adds the included files as ini configuration files
/// </summary> /// </summary>
/// <param name="sources">List of URL strings or filename strings</param> /// <param name="sources">List of URL strings or filename strings</param>
private void AddIncludes(List<string> sources) private void AddIncludes(OpenSimConfigSource configSource, List<string> sources)
{ {
//loop over config sources //loop over config sources
foreach (IConfig config in m_config.Source.Configs) foreach (IConfig config in configSource.Source.Configs)
{ {
// Look for Include-* in the key name // Look for Include-* in the key name
string[] keys = config.GetKeys(); string[] keys = config.GetKeys();
@ -284,7 +306,7 @@ namespace OpenSim
/// </summary> /// </summary>
/// <param name="iniPath">Full path to the ini</param> /// <param name="iniPath">Full path to the ini</param>
/// <returns></returns> /// <returns></returns>
private bool ReadConfig(string iniPath) private bool ReadConfig(OpenSimConfigSource configSource, string iniPath)
{ {
bool success = false; bool success = false;
@ -292,7 +314,7 @@ namespace OpenSim
{ {
m_log.InfoFormat("[CONFIG]: Reading configuration file {0}", Path.GetFullPath(iniPath)); m_log.InfoFormat("[CONFIG]: Reading configuration file {0}", Path.GetFullPath(iniPath));
m_config.Source.Merge(new IniConfigSource(iniPath)); configSource.Source.Merge(new IniConfigSource(iniPath));
success = true; success = true;
} }
else else
@ -305,7 +327,7 @@ namespace OpenSim
{ {
XmlReader r = XmlReader.Create(iniPath); XmlReader r = XmlReader.Create(iniPath);
XmlConfigSource cs = new XmlConfigSource(r); XmlConfigSource cs = new XmlConfigSource(r);
m_config.Source.Merge(cs); configSource.Source.Merge(cs);
success = true; success = true;
} }

View File

@ -2926,6 +2926,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return ret; return ret;
} }
public LSL_Vector osGetRegionSize()
{
CheckThreatLevel(ThreatLevel.None, "osGetRegionSize");
m_host.AddScriptLPS(1);
bool isMegaregion;
IRegionCombinerModule rcMod = World.RequestModuleInterface<IRegionCombinerModule>();
if (rcMod != null)
isMegaregion = rcMod.IsRootForMegaregion(World.RegionInfo.RegionID);
else
isMegaregion = false;
if (isMegaregion)
{
Vector2 size = rcMod.GetSizeOfMegaregion(World.RegionInfo.RegionID);
return new LSL_Vector(size.X, size.Y, Constants.RegionHeight);
}
else
{
return new LSL_Vector((float)Constants.RegionSize, (float)Constants.RegionSize, Constants.RegionHeight);
}
}
public int osGetSimulatorMemory() public int osGetSimulatorMemory()
{ {
CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory"); CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory");

View File

@ -337,6 +337,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
key osGetMapTexture(); key osGetMapTexture();
key osGetRegionMapTexture(string regionName); key osGetRegionMapTexture(string regionName);
LSL_List osGetRegionStats(); LSL_List osGetRegionStats();
vector osGetRegionSize();
int osGetSimulatorMemory(); int osGetSimulatorMemory();
void osKickAvatar(string FirstName,string SurName,string alert); void osKickAvatar(string FirstName,string SurName,string alert);

View File

@ -863,6 +863,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
return m_OSSL_Functions.osGetRegionStats(); return m_OSSL_Functions.osGetRegionStats();
} }
public vector osGetRegionSize()
{
return m_OSSL_Functions.osGetRegionSize();
}
/// <summary> /// <summary>
/// Returns the amount of memory in use by the Simulator Daemon. /// Returns the amount of memory in use by the Simulator Daemon.
/// Amount in bytes - if >= 4GB, returns 4GB. (LSL is not 64-bit aware) /// Amount in bytes - if >= 4GB, returns 4GB. (LSL is not 64-bit aware)