示例#1
0
        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");
                }
            }
        }
示例#2
0
        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");
                }
            }
        }