From 1bf05a543c1328c31b7b107a3335f34e8d174ed8 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Mon, 9 Mar 2009 18:35:26 +0000 Subject: * Move method documentation from AssetCache up to IAssetCache * No functional changes --- OpenSim/Framework/IAssetCache.cs | 71 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 5 deletions(-) (limited to 'OpenSim/Framework/IAssetCache.cs') diff --git a/OpenSim/Framework/IAssetCache.cs b/OpenSim/Framework/IAssetCache.cs index 22f5755..8a184bb 100644 --- a/OpenSim/Framework/IAssetCache.cs +++ b/OpenSim/Framework/IAssetCache.cs @@ -30,25 +30,86 @@ using OpenMetaverse.Packets; namespace OpenSim.Framework { - public delegate void AssetRequestCallback(UUID assetId, AssetBase asset); + /// + /// Interface to the local asset cache. This is the mechanism through which assets can be added and requested. + /// public interface IAssetCache : IAssetReceiver, IPlugin { - + /// + /// The 'server' from which assets can be requested and to which assets are persisted. + /// IAssetServer AssetServer { get; } + + void Initialise(ConfigSettings cs, IAssetServer server); + /// + /// Report statistical data to the log. + /// void ShowState(); + + /// + /// Clear the asset cache. + /// void Clear(); + + /// + /// Get an asset only if it's already in the cache. + /// + /// + /// + /// true if the asset was in the cache, false if it was not bool TryGetCachedAsset(UUID assetID, out AssetBase asset); + + /// + /// Asynchronously retrieve an asset. + /// + /// + /// + /// + /// A callback invoked when the asset has either been found or not found. + /// If the asset was found this is called with the asset UUID and the asset data + /// If the asset was not found this is still called with the asset UUID but with a null asset data reference void GetAsset(UUID assetID, AssetRequestCallback callback, bool isTexture); + + /// + /// Synchronously retreive an asset. If the asset isn't in the cache, a request will be made to the persistent store to + /// load it into the cache. + /// + /// + /// XXX We'll keep polling the cache until we get the asset or we exceed + /// the allowed number of polls. This isn't a very good way of doing things since a single thread + /// is processing inbound packets, so if the asset server is slow, we could block this for up to + /// the timeout period. Whereever possible we want to use the asynchronous callback GetAsset() + /// + /// + /// + /// null if the asset could not be retrieved AssetBase GetAsset(UUID assetID, bool isTexture); + + /// + /// Add an asset to both the persistent store and the cache. + /// + /// void AddAsset(AssetBase asset); + + /// + /// Expire an asset from the cache + /// + /// Allows you to clear a specific asset by uuid out + /// of the asset cache. This is needed because the osdynamic + /// texture code grows the asset cache without bounds. The + /// real solution here is a much better cache archicture, but + /// this is a stop gap measure until we have such a thing. void ExpireAsset(UUID assetID); + + /// + /// Handle an asset request from the client. The result will be sent back asynchronously. + /// + /// + /// void AddAssetRequest(IClientAPI userInfo, TransferRequestPacket transferRequest); - - void Initialise(ConfigSettings cs, IAssetServer server); - } public class AssetCachePluginInitialiser : PluginInitialiserBase -- cgit v1.1