public WebFetchInvDescServerConnector(IConfigSource config, IHttpServer server, string configName) : base(config, server, configName) { if (configName != String.Empty) m_ConfigName = configName; IConfig serverConfig = config.Configs[m_ConfigName]; if (serverConfig == null) throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName)); string invService = serverConfig.GetString("InventoryService", String.Empty); if (invService == String.Empty) throw new Exception("No InventoryService in config file"); Object[] args = new Object[] { config }; m_InventoryService = ServerUtils.LoadPlugin<IInventoryService>(invService, args); if (m_InventoryService == null) throw new Exception(String.Format("Failed to load InventoryService from {0}; config is {1}", invService, m_ConfigName)); string libService = serverConfig.GetString("LibraryService", String.Empty); m_LibraryService = ServerUtils.LoadPlugin<ILibraryService>(libService, args); WebFetchInvDescHandler webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService); IRequestHandler reqHandler = new RestStreamHandler("POST", "/CAPS/WebFetchInvDesc/" /*+ UUID.Random()*/, webFetchHandler.FetchInventoryDescendentsRequest); server.AddStreamHandler(reqHandler); }
public WebFetchInvDescServerConnector(IConfigSource config, IHttpServer server, string configName) : base(config, server, configName) { if (configName != String.Empty) { m_ConfigName = configName; } IConfig serverConfig = config.Configs[m_ConfigName]; if (serverConfig == null) { throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName)); } string invService = serverConfig.GetString("InventoryService", String.Empty); if (invService == String.Empty) { throw new Exception("No InventoryService in config file"); } Object[] args = new Object[] { config }; m_InventoryService = ServerUtils.LoadPlugin <IInventoryService>(invService, args); if (m_InventoryService == null) { throw new Exception(String.Format("Failed to load InventoryService from {0}; config is {1}", invService, m_ConfigName)); } string libService = serverConfig.GetString("LibraryService", String.Empty); m_LibraryService = ServerUtils.LoadPlugin <ILibraryService>(libService, args); WebFetchInvDescHandler webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService); IRequestHandler reqHandler = new RestStreamHandler( "POST", "/CAPS/WebFetchInvDesc/" /*+ UUID.Random()*/, webFetchHandler.FetchInventoryDescendentsRequest, "WebFetchInvDesc", null); server.AddStreamHandler(reqHandler); }
public void RegisterCaps(UUID agentID, Caps caps) { UUID capID = UUID.Random(); //caps.RegisterHandler("GetTexture", new StreamHandler("GET", "/CAPS/" + capID, ProcessGetTexture)); if (m_URL == "localhost") { m_log.InfoFormat("[WEBFETCHINVENTORYDESCENDANTS]: /CAPS/{0} in region {1}", capID, m_scene.RegionInfo.RegionName); WebFetchInvDescHandler webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService); IRequestHandler reqHandler = new RestStreamHandler("POST", "/CAPS/" + UUID.Random(), webFetchHandler.FetchInventoryDescendentsRequest); caps.RegisterHandler("WebFetchInventoryDescendents", reqHandler); } else { m_log.InfoFormat("[WEBFETCHINVENTORYDESCENDANTS]: {0} in region {1}", m_URL, m_scene.RegionInfo.RegionName); caps.RegisterHandler("WebFetchInventoryDescendents", m_URL); } }
public void RegionLoaded(Scene s) { if (!m_Enabled) return; m_InventoryService = m_scene.InventoryService; m_LibraryService = m_scene.LibraryService; // We'll reuse the same handler for all requests. m_webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService); m_scene.EventManager.OnRegisterCaps += RegisterCaps; if (m_workerThreads == null) { m_workerThreads = new Thread[2]; for (uint i = 0; i < 2; i++) { m_workerThreads[i] = Watchdog.StartThread(DoInventoryRequests, String.Format("InventoryWorkerThread{0}", i), ThreadPriority.Normal, false, true, null, int.MaxValue); } } }
public void RegionLoaded(Scene s) { if (!m_Enabled) return; if (s_processedRequestsStat == null) s_processedRequestsStat = new Stat( "ProcessedFetchInventoryRequests", "Number of processed fetch inventory requests", "These have not necessarily yet been dispatched back to the requester.", "", "inventory", "httpfetch", StatType.Pull, MeasuresOfInterest.AverageChangeOverTime, stat => { stat.Value = ProcessedRequestsCount; }, StatVerbosity.Debug); if (s_queuedRequestsStat == null) s_queuedRequestsStat = new Stat( "QueuedFetchInventoryRequests", "Number of fetch inventory requests queued for processing", "", "", "inventory", "httpfetch", StatType.Pull, MeasuresOfInterest.AverageChangeOverTime, stat => { stat.Value = m_queue.Count; }, StatVerbosity.Debug); StatsManager.RegisterStat(s_processedRequestsStat); StatsManager.RegisterStat(s_queuedRequestsStat); m_InventoryService = Scene.InventoryService; m_LibraryService = Scene.LibraryService; // We'll reuse the same handler for all requests. m_webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService); Scene.EventManager.OnRegisterCaps += RegisterCaps; if (ProcessQueuedRequestsAsync && m_workerThreads == null) { m_workerThreads = new Thread[2]; for (uint i = 0; i < 2; i++) { m_workerThreads[i] = Watchdog.StartThread(DoInventoryRequests, String.Format("InventoryWorkerThread{0}", i), ThreadPriority.Normal, false, true, null, int.MaxValue); } } }
public void RegionLoaded(Scene s) { if (!m_Enabled) return; m_InventoryService = m_scene.InventoryService; m_LibraryService = m_scene.LibraryService; // We'll reuse the same handler for all requests. if (m_fetchInventoryDescendents2Url == "localhost" || m_webFetchInventoryDescendentsUrl == "localhost") m_webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService); m_scene.EventManager.OnRegisterCaps += RegisterCaps; }