Create a generic way for passing constructor args to plugins
The old syntax didn't allow for any parameters except for services listed in the ServiceList. Now, services loaded by other services can also be made to use different ini sections or have additional paramters. Syntax is: [<ExtraParam>@]...<DllName>[:<ClassName>]melanie
parent
7abb0477ed
commit
f03a6bbc61
|
@ -242,6 +242,18 @@ namespace OpenSim.Server.Base
|
|||
className = parts[2];
|
||||
}
|
||||
|
||||
// Handle extra string arguments in a more generic way
|
||||
if (dllName.Contains("@"))
|
||||
{
|
||||
string[] dllNameParts = dllName.Split(new char[] {'@'});
|
||||
dllName = dllNameParts[dllNameParts.Length - 1];
|
||||
List<Object> argList = new List<Object>(args);
|
||||
for (int i = 0 ; i < dllNameParts.Length - 1 ; ++i)
|
||||
argList.Add(dllNameParts[i]);
|
||||
|
||||
args = argList.ToArray();
|
||||
}
|
||||
|
||||
return LoadPlugin<T>(dllName, className, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ namespace OpenSim.Services.Connectors
|
|||
/// In this case, -1 is default timeout (100 seconds), not infinite.
|
||||
/// </remarks>
|
||||
private int m_requestTimeoutSecs = -1;
|
||||
private string m_configName = "InventoryService";
|
||||
|
||||
private const double CACHE_EXPIRATION_SECONDS = 20.0;
|
||||
private static ExpiringCache<UUID, InventoryItemBase> m_ItemCache = new ExpiringCache<UUID,InventoryItemBase>();
|
||||
|
@ -76,6 +77,13 @@ namespace OpenSim.Services.Connectors
|
|||
m_ServerURI = serverURI.TrimEnd('/');
|
||||
}
|
||||
|
||||
public XInventoryServicesConnector(IConfigSource source, string configName)
|
||||
: base(source, configName)
|
||||
{
|
||||
m_configName = configName;
|
||||
Initialise(source);
|
||||
}
|
||||
|
||||
public XInventoryServicesConnector(IConfigSource source)
|
||||
: base(source, "InventoryService")
|
||||
{
|
||||
|
@ -84,10 +92,10 @@ namespace OpenSim.Services.Connectors
|
|||
|
||||
public virtual void Initialise(IConfigSource source)
|
||||
{
|
||||
IConfig config = source.Configs["InventoryService"];
|
||||
IConfig config = source.Configs[m_configName];
|
||||
if (config == null)
|
||||
{
|
||||
m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini");
|
||||
m_log.ErrorFormat("[INVENTORY CONNECTOR]: {0} missing from OpenSim.ini", m_configName);
|
||||
throw new Exception("Inventory connector init error");
|
||||
}
|
||||
|
||||
|
|
|
@ -180,9 +180,14 @@ namespace OpenSim.Services.LLLoginService
|
|||
string hgInvServicePlugin = m_LoginServerConfig.GetString("HGInventoryServicePlugin", String.Empty);
|
||||
if (hgInvServicePlugin != string.Empty)
|
||||
{
|
||||
// TODO: Remove HGInventoryServiceConstructorArg after 0.9 release
|
||||
string hgInvServiceArg = m_LoginServerConfig.GetString("HGInventoryServiceConstructorArg", String.Empty);
|
||||
Object[] args2 = new Object[] { config, hgInvServiceArg };
|
||||
m_HGInventoryService = ServerUtils.LoadPlugin<IInventoryService>(hgInvServicePlugin, args2);
|
||||
if (hgInvServiceArg != String.Empty)
|
||||
{
|
||||
m_log.Warn("[LLOGIN SERVICE]: You are using HGInventoryServiceConstructorArg, which is deprecated. See example file for correct syntax.");
|
||||
hgInvServicePlugin = hgInvServiceArg + "@" + hgInvServicePlugin;
|
||||
}
|
||||
m_HGInventoryService = ServerUtils.LoadPlugin<IInventoryService>(hgInvServicePlugin, args);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -488,8 +488,9 @@
|
|||
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
|
||||
|
||||
; This inventory service will be used to initialize the user's inventory
|
||||
HGInventoryServicePlugin = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
|
||||
HGInventoryServiceConstructorArg = "HGInventoryService"
|
||||
HGInventoryServicePlugin = "HGInventoryService@OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
|
||||
; NOTE: HGInventoryServiceConstructorArg is deprecated. For now it will work, but see above
|
||||
; for the correct method if passing additional arguments.
|
||||
;; end hypergrid
|
||||
|
||||
; Ask co-operative viewers to use a different currency name
|
||||
|
|
Loading…
Reference in New Issue