Exemple #1
0
        /// <summary>
        /// On our own thread, make  the synchronous texture request from the asset server
        /// </summary>
        /// <param name="qInstance"></param>
        /// <param name="obinID"></param>
        /// <returns></returns>
        private bool ThrottleTextureMakeRequest(DoLaterBase qInstance, Object obinID)
        {
            OMV.UUID binID = (OMV.UUID)obinID;

            Uri            assetPath = new Uri(m_baseUri.ToString() + "?texture_id=" + binID.ToString());
            HttpWebRequest request   = (HttpWebRequest)WebRequest.Create(assetPath);

            request.MaximumAutomaticRedirections = 4;
            request.MaximumResponseHeadersLength = 4;
            request.Timeout = 30000; // 30 second timeout
            if (m_proxyPath != null)
            {
                // configure proxy if necessary
                WebProxy myProxy = new WebProxy();
                myProxy.Address = new Uri(m_proxyPath);
                request.Proxy   = myProxy;
            }
            try {
                m_log.Log(LogLevel.DCOMMDETAIL, "ThrottleTextureMakeRequest: requesting '{0}'", assetPath);
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
                    m_log.Log(LogLevel.DCOMMDETAIL, "ThrottleTextureMakeRequest: request returned. resp={0}, l={1}",
                              response.StatusCode, response.ContentLength);
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        using (Stream receiveStream = response.GetResponseStream()) {
                            OMV.Assets.AssetTexture at;
                            if (m_dataFetch)
                            {
                                // we're getting raw binary data
                                byte[] textureBuff = new byte[response.ContentLength];
                                receiveStream.Read(textureBuff, 0, (int)response.ContentLength);
                                at = new OMV.Assets.AssetTexture(binID, textureBuff);
                            }
                            else
                            {
                                // receiving a serialized package
                                XmlSerializer xserial             = new XmlSerializer(typeof(OpenSim.Framework.AssetBase));
                                OpenSim.Framework.AssetBase abase = (OpenSim.Framework.AssetBase)xserial.Deserialize(receiveStream);
                                at = new OMV.Assets.AssetTexture(binID, abase.Data);
                            }
                            ProcessDownloadFinished(OMV.TextureRequestState.Finished, at);
                        }
                    }
                    else
                    {
                        m_log.Log(LogLevel.DCOMMDETAIL, "ThrottleTextureMakeRequest: Non-OK status code");
                        OMV.Assets.AssetTexture at = new OMV.Assets.AssetTexture(binID, new byte[0]);
                        ProcessDownloadFinished(OMV.TextureRequestState.NotFound, at);
                    }
                }
            }
            catch (Exception e) {
                m_log.Log(LogLevel.DBADERROR, "Error fetching asset: {0}", e);
                OMV.Assets.AssetTexture at = new OMV.Assets.AssetTexture(binID, new byte[0]);
                ProcessDownloadFinished(OMV.TextureRequestState.NotFound, at);
            }
            return(true);
        }
Exemple #2
0
 /// <summary>
 /// Converts from an opensim asset to a stratus asset
 /// </summary>
 /// <param name="asset"></param>
 /// <returns></returns>
 internal static StratusAsset FromAssetBase(OpenSim.Framework.AssetBase asset)
 {
     return(new StratusAsset
     {
         CreateTime = asset.Metadata.CreationDate,
         Data = asset.Data,
         Description = asset.Description,
         Id = asset.FullID.Guid,
         Local = asset.Local,
         Name = asset.Name,
         Temporary = asset.Temporary,
         Type = asset.Type
     });
 }
Exemple #3
0
        /// <summary>
        /// Converts from a stratus asset to an opensim asset
        /// </summary>
        /// <returns></returns>
        internal OpenSim.Framework.AssetBase ToAssetBase()
        {
            OpenSim.Framework.AssetBase asset = new OpenSim.Framework.AssetBase
            {
                Data        = this.Data,
                Description = this.Description,
                ID          = new OpenMetaverse.UUID(this.Id).ToString(),
                FullID      = new OpenMetaverse.UUID(this.Id),
                Local       = this.Local,
                Name        = this.Name,
                Temporary   = this.Temporary,
                Type        = this.Type,
            };

            asset.Metadata.CreationDate = CreateTime;

            return(asset);
        }
Exemple #4
0
        /// <summary>
        /// Converts from a stratus asset to an opensim asset
        /// </summary>
        /// <returns></returns>
        internal OpenSim.Framework.AssetBase ToAssetBase()
        {
            OpenSim.Framework.AssetBase asset = new OpenSim.Framework.AssetBase
            {
                Data = this.Data,
                Description = this.Description,
                ID = new OpenMetaverse.UUID(this.Id).ToString(),
                FullID = new OpenMetaverse.UUID(this.Id),
                Local = this.Local,
                Name = this.Name,
                Temporary = this.Temporary,
                Type = this.Type,
            };

            asset.Metadata.CreationDate = CreateTime;

            return asset;
        }