Пример #1
0
        public void RegionLoaded(Scene s)
        {
            if (!m_Enabled)
            {
                return;
            }

            lock (m_loadLock)
            {
                if (m_assetService == null && m_NumberScenes == 0)
                {
                    m_assetService = s.RequestModuleInterface <IAssetService>();
                    // We'll reuse the same handler for all requests.
                    m_getAssetHandler = new GetAssetsHandler(m_assetService);
                }

                if (m_assetService == null)
                {
                    m_Enabled = false;
                    return;
                }

                if (m_UserManagement == null)
                {
                    m_UserManagement = s.RequestModuleInterface <IUserManagement>();
                }

                s.EventManager.OnRegisterCaps   += RegisterCaps;
                s.EventManager.OnDeregisterCaps += DeregisterCaps;

                m_NumberScenes++;

                if (m_workerThreads == null)
                {
                    m_workerThreads = new Thread[3];
                    for (uint i = 0; i < 3; i++)
                    {
                        m_workerThreads[i] = WorkManager.StartThread(DoAssetRequests,
                                                                     String.Format("GetCapsAssetWorker{0}", i),
                                                                     ThreadPriority.Normal,
                                                                     true,
                                                                     false,
                                                                     null,
                                                                     int.MaxValue);
                    }
                }
            }
        }
Пример #2
0
        public void RegisterCaps(UUID agentID, Caps caps)
        {
            GetAssetsHandler assethandler       = null;
            GetAssetsHandler reuse_assethandler = null;

            foreach (CapsData data in m_CapsData)
            {
                if (data.Url == "localhost")
                {
                    if (string.IsNullOrEmpty(data.RedirectUrl))
                    {
                        if (reuse_assethandler == null)
                        {
                            reuse_assethandler = new GetAssetsHandler("/CAPS/" + UUID.Random() + "/", m_assetService, "GetAsset", agentID.ToString(), null);
                        }
                        assethandler = reuse_assethandler;
                    }
                    else
                    {
                        assethandler = new GetAssetsHandler("/CAPS/" + UUID.Random() + "/", m_assetService, data.Name, agentID.ToString(), data.RedirectUrl);
                    }
                    caps.RegisterHandler(
                        data.Name,
                        assethandler);
                }
                else
                {
                    IExternalCapsModule handler = m_scene.RequestModuleInterface <IExternalCapsModule>();
                    if (handler != null)
                    {
                        handler.RegisterExternalUserCapsHandler(agentID, caps, data.Name, data.Url);
                    }
                    else
                    {
                        caps.RegisterHandler(data.Name, data.Url);
                    }
                }
            }
        }
Пример #3
0
        public void RegionLoaded(Scene s)
        {
            if (!m_Enabled)
            {
                return;
            }

            lock (m_loadLock)
            {
                if (m_assetService == null)
                {
                    m_assetService = s.RequestModuleInterface <IAssetService>();
                    // We'll reuse the same handler for all requests.
                    m_getAssetHandler = new GetAssetsHandler(m_assetService);
                }

                if (m_assetService == null)
                {
                    m_Enabled = false;
                    return;
                }

                if (m_UserManagement == null)
                {
                    m_UserManagement = s.RequestModuleInterface <IUserManagement>();
                }

                s.EventManager.OnRegisterCaps += RegisterCaps;

                m_NumberScenes++;

                if (m_workerpool == null)
                {
                    m_workerpool = new ObjectJobEngine(DoAssetRequests, "GetCapsAssetWorker", 1000, 3);
                }
            }
        }