public void Post(UUID assetID, UUID ownerID) { if (!IsLocalUser(ownerID)) { // Post the item from the local AssetCache ontp the remote asset server // and place an entry in m_assetMap GridAssetClient asscli = null; string userAssetURL = UserAssetURL(ownerID); if (userAssetURL != null) { m_assetServers.TryGetValue(userAssetURL, out asscli); if (asscli == null) { m_log.Debug("[HGScene]: Starting new GridAssetClient for " + userAssetURL); asscli = new GridAssetClient(userAssetURL); asscli.SetReceiver(m_scene.CommsManager.AssetCache); // Straight to the asset cache! m_assetServers.Add(userAssetURL, asscli); } m_log.Debug("[HGScene]: Posting object " + assetID + " to asset server " + userAssetURL); AssetBase ass1 = null; m_scene.CommsManager.AssetCache.TryGetCachedAsset(assetID, out ass1); if (ass1 != null) { bool success = PostAsset(asscli, assetID, (ass1.Type == (sbyte)AssetType.Texture)); // Now the inside Dictionary <UUID, bool> ids = SniffUUIDs(assetID); Dump(ids); foreach (KeyValuePair <UUID, bool> kvp in ids) { PostAsset(asscli, kvp.Key, kvp.Value); } if (success) { m_log.Debug("[HGScene]: Successfully posted item to remote asset server " + userAssetURL); if (!m_assetMap.ContainsKey(assetID)) { m_assetMap.Add(assetID, asscli); } } else { m_log.Warn("[HGScene]: Could not post asset to remote asset server " + userAssetURL); } } else { m_log.Debug("[HGScene]: Something wrong with asset"); } } else { m_log.Warn("[HGScene]: Unable to locate foreign user's asset server"); } } }
public void Get(UUID assetID, UUID ownerID) { if (!IsInAssetMap(assetID) && !IsLocalUser(ownerID)) { // Get the item from the remote asset server onto the local AssetCache // and place an entry in m_assetMap GridAssetClient asscli = null; string userAssetURL = UserAssetURL(ownerID); if (userAssetURL != null) { m_assetServers.TryGetValue(userAssetURL, out asscli); if (asscli == null) { m_log.Debug("[HGScene]: Starting new GridAssetClient for " + userAssetURL); asscli = new GridAssetClient(userAssetURL); asscli.SetReceiver(m_scene.CommsManager.AssetCache); // Straight to the asset cache! m_assetServers.Add(userAssetURL, asscli); asscli.Start(); } m_log.Debug("[HGScene]: Fetching object " + assetID + " to asset server " + userAssetURL); bool success = FetchAsset(asscli, assetID, false); // asscli.RequestAsset(item.ItemID, false); // OK, now fetch the inside. Dictionary <UUID, bool> ids = SniffUUIDs(assetID); Dump(ids); foreach (KeyValuePair <UUID, bool> kvp in ids) { FetchAsset(asscli, kvp.Key, kvp.Value); } if (success) { m_log.Debug("[HGScene]: Successfully fetched item from remote asset server " + userAssetURL); m_assetMap.Add(assetID, asscli); } else { m_log.Warn("[HGScene]: Could not fetch asset from remote asset server " + userAssetURL); } } else { m_log.Warn("[HGScene]: Unable to locate foreign user's asset server"); } } }