mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
When using FSAssets, the HGAssetService would still use AssetService.
This introduces a new HGAssetService config option named BackingService, which defaults to the old behaviour, loading AssetService. It can, however, be used to load FSAssets for HG assets, which eliminates numerous problems.
This commit is contained in:
@@ -39,6 +39,7 @@ using OpenSim.Framework.Serialization.External;
|
||||
using OpenSim.Server.Base;
|
||||
using OpenSim.Services.Interfaces;
|
||||
using OpenSim.Services.AssetService;
|
||||
using OpenSim.Services.Base;
|
||||
|
||||
namespace OpenSim.Services.HypergridService
|
||||
{
|
||||
@@ -47,7 +48,7 @@ namespace OpenSim.Services.HypergridService
|
||||
/// but implements it in ways that are appropriate for inter-grid
|
||||
/// asset exchanges.
|
||||
/// </summary>
|
||||
public class HGAssetService : OpenSim.Services.AssetService.AssetService, IAssetService
|
||||
public class HGAssetService : ServiceBase, IAssetService
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
@@ -60,7 +61,9 @@ namespace OpenSim.Services.HypergridService
|
||||
|
||||
private AssetPermissions m_AssetPerms;
|
||||
|
||||
public HGAssetService(IConfigSource config, string configName) : base(config, configName)
|
||||
IAssetService m_assetService = null;
|
||||
|
||||
public HGAssetService(IConfigSource config, string configName) : base(config)
|
||||
{
|
||||
m_log.Debug("[HGAsset Service]: Starting");
|
||||
IConfig assetConfig = config.Configs[configName];
|
||||
@@ -86,12 +89,30 @@ namespace OpenSim.Services.HypergridService
|
||||
// Permissions
|
||||
m_AssetPerms = new AssetPermissions(assetConfig);
|
||||
|
||||
string str = assetConfig.GetString("BackingService", "OpenSim.Services.AssetService.dll:AssetService");
|
||||
|
||||
if (str != string.Empty)
|
||||
{
|
||||
args = new object[] { config };
|
||||
m_assetService = LoadPlugin<IAssetService>(str, args);
|
||||
if (m_assetService != null)
|
||||
{
|
||||
m_log.InfoFormat("[HGASSETS]: Backing service loaded: {0}", str);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.ErrorFormat("[HGASSETS]: Failed to load backing service {0}", str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#region IAssetService overrides
|
||||
public override AssetBase Get(string id)
|
||||
#region IAssetService
|
||||
public AssetBase Get(string id)
|
||||
{
|
||||
AssetBase asset = base.Get(id);
|
||||
AssetBase asset = m_assetService.Get(id);
|
||||
|
||||
if (asset == null)
|
||||
return null;
|
||||
@@ -107,9 +128,9 @@ namespace OpenSim.Services.HypergridService
|
||||
return asset;
|
||||
}
|
||||
|
||||
public override AssetMetadata GetMetadata(string id)
|
||||
public AssetMetadata GetMetadata(string id)
|
||||
{
|
||||
AssetMetadata meta = base.GetMetadata(id);
|
||||
AssetMetadata meta = m_assetService.GetMetadata(id);
|
||||
|
||||
if (meta == null)
|
||||
return null;
|
||||
@@ -119,7 +140,7 @@ namespace OpenSim.Services.HypergridService
|
||||
return meta;
|
||||
}
|
||||
|
||||
public override byte[] GetData(string id)
|
||||
public byte[] GetData(string id)
|
||||
{
|
||||
AssetBase asset = Get(id);
|
||||
|
||||
@@ -142,7 +163,7 @@ namespace OpenSim.Services.HypergridService
|
||||
|
||||
//public virtual bool Get(string id, Object sender, AssetRetrieved handler)
|
||||
|
||||
public override string Store(AssetBase asset)
|
||||
public string Store(AssetBase asset)
|
||||
{
|
||||
if (!m_AssetPerms.AllowedImport(asset.Type))
|
||||
return string.Empty;
|
||||
@@ -155,15 +176,53 @@ namespace OpenSim.Services.HypergridService
|
||||
asset.Data = Utils.StringToBytes(xml);
|
||||
}
|
||||
|
||||
return base.Store(asset);
|
||||
return m_assetService.Store(asset);
|
||||
}
|
||||
|
||||
public override bool Delete(string id)
|
||||
public bool Delete(string id)
|
||||
{
|
||||
// NOGO
|
||||
return false;
|
||||
}
|
||||
|
||||
public AssetBase GetCached(string id)
|
||||
{
|
||||
AssetBase asset = m_assetService.GetCached(id);
|
||||
|
||||
if (asset == null)
|
||||
return null;
|
||||
|
||||
if (!m_AssetPerms.AllowedExport(asset.Type))
|
||||
return null;
|
||||
|
||||
if (asset.Metadata.Type == (sbyte)AssetType.Object)
|
||||
asset.Data = AdjustIdentifiers(asset.Data);
|
||||
|
||||
AdjustIdentifiers(asset.Metadata);
|
||||
|
||||
return asset;
|
||||
}
|
||||
|
||||
public bool Get(string id, object sender, AssetRetrieved handler)
|
||||
{
|
||||
AssetBase asset = Get(id);
|
||||
|
||||
handler?.Invoke(id, sender, asset);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool[] AssetsExist(string[] ids)
|
||||
{
|
||||
return m_assetService.AssetsExist(ids);
|
||||
}
|
||||
|
||||
public bool UpdateContent(string id, byte[] data)
|
||||
{
|
||||
// NO WAY
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected void AdjustIdentifiers(AssetMetadata meta)
|
||||
@@ -187,7 +246,5 @@ namespace OpenSim.Services.HypergridService
|
||||
|
||||
return Utils.StringToBytes(ExternalRepresentationUtils.RewriteSOP(xml, "HGAssetService", m_HomeURL, m_Cache, UUID.Zero));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user