diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 3b1a0bd..cfc1ebc 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -43,6 +43,7 @@ using OpenSim.Framework.Communications.Cache; | |||
43 | using OpenSim.Framework.Statistics; | 43 | using OpenSim.Framework.Statistics; |
44 | using OpenSim.Region.Framework.Interfaces; | 44 | using OpenSim.Region.Framework.Interfaces; |
45 | using OpenSim.Region.Framework.Scenes; | 45 | using OpenSim.Region.Framework.Scenes; |
46 | using OpenSim.Region.Framework.Scenes.Hypergrid; | ||
46 | using OpenSim.Services.Interfaces; | 47 | using OpenSim.Services.Interfaces; |
47 | using Timer=System.Timers.Timer; | 48 | using Timer=System.Timers.Timer; |
48 | using AssetLandmark = OpenSim.Framework.AssetLandmark; | 49 | using AssetLandmark = OpenSim.Framework.AssetLandmark; |
@@ -318,6 +319,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
318 | protected int m_avatarTerseUpdateRate = 50; | 319 | protected int m_avatarTerseUpdateRate = 50; |
319 | protected int m_avatarTerseUpdatesPerPacket = 5; | 320 | protected int m_avatarTerseUpdatesPerPacket = 5; |
320 | protected IAssetService m_assetService; | 321 | protected IAssetService m_assetService; |
322 | private IHyperAssetService m_hyperAssets; | ||
323 | |||
321 | 324 | ||
322 | #endregion Class Members | 325 | #endregion Class Members |
323 | 326 | ||
@@ -376,6 +379,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
376 | 379 | ||
377 | m_scene = scene; | 380 | m_scene = scene; |
378 | m_assetService = m_scene.RequestModuleInterface<IAssetService>(); | 381 | m_assetService = m_scene.RequestModuleInterface<IAssetService>(); |
382 | m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>(); | ||
379 | m_GroupsModule = scene.RequestModuleInterface<IGroupsModule>(); | 383 | m_GroupsModule = scene.RequestModuleInterface<IGroupsModule>(); |
380 | m_imageManager = new LLImageManager(this, m_assetService, Scene.RequestModuleInterface<IJ2KDecoder>()); | 384 | m_imageManager = new LLImageManager(this, m_assetService, Scene.RequestModuleInterface<IJ2KDecoder>()); |
381 | m_channelVersion = Utils.StringToBytes(scene.GetSimulatorVersion()); | 385 | m_channelVersion = Utils.StringToBytes(scene.GetSimulatorVersion()); |
@@ -6894,7 +6898,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6894 | #endregion | 6898 | #endregion |
6895 | 6899 | ||
6896 | //handlerTextureRequest = null; | 6900 | //handlerTextureRequest = null; |
6897 | |||
6898 | for (int i = 0; i < imageRequest.RequestImage.Length; i++) | 6901 | for (int i = 0; i < imageRequest.RequestImage.Length; i++) |
6899 | { | 6902 | { |
6900 | if (OnRequestTexture != null) | 6903 | if (OnRequestTexture != null) |
@@ -6905,7 +6908,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6905 | args.PacketNumber = imageRequest.RequestImage[i].Packet; | 6908 | args.PacketNumber = imageRequest.RequestImage[i].Packet; |
6906 | args.Priority = imageRequest.RequestImage[i].DownloadPriority; | 6909 | args.Priority = imageRequest.RequestImage[i].DownloadPriority; |
6907 | args.requestSequence = imageRequest.Header.Sequence; | 6910 | args.requestSequence = imageRequest.Header.Sequence; |
6908 | |||
6909 | //handlerTextureRequest = OnRequestTexture; | 6911 | //handlerTextureRequest = OnRequestTexture; |
6910 | 6912 | ||
6911 | //if (handlerTextureRequest != null) | 6913 | //if (handlerTextureRequest != null) |
@@ -6928,10 +6930,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6928 | // Validate inventory transfers | 6930 | // Validate inventory transfers |
6929 | // Has to be done here, because AssetCache can't do it | 6931 | // Has to be done here, because AssetCache can't do it |
6930 | // | 6932 | // |
6931 | 6933 | UUID taskID = UUID.Zero; | |
6932 | if (transfer.TransferInfo.SourceType == 3) | 6934 | if (transfer.TransferInfo.SourceType == 3) |
6933 | { | 6935 | { |
6934 | UUID taskID = new UUID(transfer.TransferInfo.Params, 48); | 6936 | taskID = new UUID(transfer.TransferInfo.Params, 48); |
6935 | UUID itemID = new UUID(transfer.TransferInfo.Params, 64); | 6937 | UUID itemID = new UUID(transfer.TransferInfo.Params, 64); |
6936 | UUID requestID = new UUID(transfer.TransferInfo.Params, 80); | 6938 | UUID requestID = new UUID(transfer.TransferInfo.Params, 80); |
6937 | if (!(((Scene)m_scene).Permissions.BypassPermissions())) | 6939 | if (!(((Scene)m_scene).Permissions.BypassPermissions())) |
@@ -7002,7 +7004,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7002 | 7004 | ||
7003 | //m_assetCache.AddAssetRequest(this, transfer); | 7005 | //m_assetCache.AddAssetRequest(this, transfer); |
7004 | 7006 | ||
7005 | MakeAssetRequest(transfer); | 7007 | MakeAssetRequest(transfer, taskID); |
7006 | 7008 | ||
7007 | /* RequestAsset = OnRequestAsset; | 7009 | /* RequestAsset = OnRequestAsset; |
7008 | if (RequestAsset != null) | 7010 | if (RequestAsset != null) |
@@ -10209,7 +10211,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10209 | return String.Empty; | 10211 | return String.Empty; |
10210 | } | 10212 | } |
10211 | 10213 | ||
10212 | public void MakeAssetRequest(TransferRequestPacket transferRequest) | 10214 | public void MakeAssetRequest(TransferRequestPacket transferRequest, UUID taskID) |
10213 | { | 10215 | { |
10214 | UUID requestID = UUID.Zero; | 10216 | UUID requestID = UUID.Zero; |
10215 | if (transferRequest.TransferInfo.SourceType == 2) | 10217 | if (transferRequest.TransferInfo.SourceType == 2) |
@@ -10221,12 +10223,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10221 | { | 10223 | { |
10222 | //inventory asset request | 10224 | //inventory asset request |
10223 | requestID = new UUID(transferRequest.TransferInfo.Params, 80); | 10225 | requestID = new UUID(transferRequest.TransferInfo.Params, 80); |
10224 | //m_log.Debug("asset request " + requestID); | 10226 | //m_log.Debug("[XXX] inventory asset request " + requestID); |
10227 | //if (taskID == UUID.Zero) // Agent | ||
10228 | // if (m_scene is HGScene) | ||
10229 | // { | ||
10230 | // m_log.Debug("[XXX] hg asset request " + requestID); | ||
10231 | // // We may need to fetch the asset from the user's asset server into the local asset server | ||
10232 | // HGAssetMapper mapper = ((HGScene)m_scene).AssetMapper; | ||
10233 | // mapper.Get(requestID, AgentId); | ||
10234 | // } | ||
10225 | } | 10235 | } |
10226 | 10236 | ||
10227 | //check to see if asset is in local cache, if not we need to request it from asset server. | 10237 | //check to see if asset is in local cache, if not we need to request it from asset server. |
10228 | //m_log.Debug("asset request " + requestID); | 10238 | //m_log.Debug("asset request " + requestID); |
10229 | 10239 | ||
10230 | m_assetService.Get(requestID.ToString(), transferRequest, AssetReceived); | 10240 | m_assetService.Get(requestID.ToString(), transferRequest, AssetReceived); |
10231 | 10241 | ||
10232 | } | 10242 | } |
@@ -10237,12 +10247,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10237 | 10247 | ||
10238 | UUID requestID = UUID.Zero; | 10248 | UUID requestID = UUID.Zero; |
10239 | byte source = 2; | 10249 | byte source = 2; |
10240 | if (transferRequest.TransferInfo.SourceType == 2) | 10250 | if ((transferRequest.TransferInfo.SourceType == 2) || (transferRequest.TransferInfo.SourceType == 2222)) |
10241 | { | 10251 | { |
10242 | //direct asset request | 10252 | //direct asset request |
10243 | requestID = new UUID(transferRequest.TransferInfo.Params, 0); | 10253 | requestID = new UUID(transferRequest.TransferInfo.Params, 0); |
10244 | } | 10254 | } |
10245 | else if (transferRequest.TransferInfo.SourceType == 3) | 10255 | else if ((transferRequest.TransferInfo.SourceType == 3) || (transferRequest.TransferInfo.SourceType == 3333)) |
10246 | { | 10256 | { |
10247 | //inventory asset request | 10257 | //inventory asset request |
10248 | requestID = new UUID(transferRequest.TransferInfo.Params, 80); | 10258 | requestID = new UUID(transferRequest.TransferInfo.Params, 80); |
@@ -10250,10 +10260,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10250 | //m_log.Debug("asset request " + requestID); | 10260 | //m_log.Debug("asset request " + requestID); |
10251 | } | 10261 | } |
10252 | 10262 | ||
10253 | // FIXME: We never tell the client about assets which do not exist when requested by this transfer mechanism, which can't be right. | ||
10254 | if (null == asset) | 10263 | if (null == asset) |
10255 | { | 10264 | { |
10265 | if ((m_hyperAssets != null) && (transferRequest.TransferInfo.SourceType < 2000)) | ||
10266 | { | ||
10267 | // Try the user's inventory, but only if it's different from the regions' | ||
10268 | string userAssets = m_hyperAssets.GetUserAssetServer(AgentId); | ||
10269 | if ((userAssets != string.Empty) && (userAssets != m_hyperAssets.GetSimAssetServer())) | ||
10270 | { | ||
10271 | m_log.DebugFormat("[CLIENT]: asset {0} not found in local asset storage. Trying user's storage.", id); | ||
10272 | if (transferRequest.TransferInfo.SourceType == 2) | ||
10273 | transferRequest.TransferInfo.SourceType = 2222; // marker | ||
10274 | else if (transferRequest.TransferInfo.SourceType == 3) | ||
10275 | transferRequest.TransferInfo.SourceType = 3333; // marker | ||
10276 | |||
10277 | m_assetService.Get(userAssets + "/" + id, transferRequest, AssetReceived); | ||
10278 | return; | ||
10279 | } | ||
10280 | } | ||
10281 | |||
10256 | //m_log.DebugFormat("[ASSET CACHE]: Asset transfer request for asset which is {0} already known to be missing. Dropping", requestID); | 10282 | //m_log.DebugFormat("[ASSET CACHE]: Asset transfer request for asset which is {0} already known to be missing. Dropping", requestID); |
10283 | |||
10284 | // FIXME: We never tell the client about assets which do not exist when requested by this transfer mechanism, which can't be right. | ||
10257 | return; | 10285 | return; |
10258 | } | 10286 | } |
10259 | 10287 | ||