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.0.9.1.0-post-fixes
							parent
							
								
									d372309e3c
								
							
						
					
					
						commit
						aedaa32ddc
					
				|  | @ -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)); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Melanie
						Melanie