diff options
author | Justin Clark-Casey (justincc) | 2013-07-16 00:05:45 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-07-16 00:05:45 +0100 |
commit | e8e073aa97a8f756f42b242dd1cfcd05beb4d8ef (patch) | |
tree | 6a029db31677dd2034ac03889722cdcc9d1ec336 | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-e8e073aa97a8f756f42b242dd1cfcd05beb4d8ef.zip opensim-SC-e8e073aa97a8f756f42b242dd1cfcd05beb4d8ef.tar.gz opensim-SC-e8e073aa97a8f756f42b242dd1cfcd05beb4d8ef.tar.bz2 opensim-SC-e8e073aa97a8f756f42b242dd1cfcd05beb4d8ef.tar.xz |
Simplify EventQueue cap setup so that it is also stat monitored.
Curiously, the number of requests received is always one greater than that shown as handled - needs investigation
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs | 74 |
1 files changed, 29 insertions, 45 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs index ca38a97..1835a72 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs | |||
@@ -252,29 +252,32 @@ namespace OpenSim.Region.ClientStack.Linden | |||
252 | 252 | ||
253 | List<UUID> removeitems = new List<UUID>(); | 253 | List<UUID> removeitems = new List<UUID>(); |
254 | lock (m_AvatarQueueUUIDMapping) | 254 | lock (m_AvatarQueueUUIDMapping) |
255 | { | 255 | m_AvatarQueueUUIDMapping.Remove(agentID); |
256 | foreach (UUID ky in m_AvatarQueueUUIDMapping.Keys) | ||
257 | { | ||
258 | // m_log.DebugFormat("[EVENTQUEUE]: Found key {0} in m_AvatarQueueUUIDMapping while looking for {1}", ky, AgentID); | ||
259 | if (ky == agentID) | ||
260 | { | ||
261 | removeitems.Add(ky); | ||
262 | } | ||
263 | } | ||
264 | 256 | ||
265 | foreach (UUID ky in removeitems) | 257 | // lock (m_AvatarQueueUUIDMapping) |
266 | { | 258 | // { |
267 | UUID eventQueueGetUuid = m_AvatarQueueUUIDMapping[ky]; | 259 | // foreach (UUID ky in m_AvatarQueueUUIDMapping.Keys) |
268 | m_AvatarQueueUUIDMapping.Remove(ky); | 260 | // { |
269 | 261 | //// m_log.DebugFormat("[EVENTQUEUE]: Found key {0} in m_AvatarQueueUUIDMapping while looking for {1}", ky, AgentID); | |
270 | string eqgPath = GenerateEqgCapPath(eventQueueGetUuid); | 262 | // if (ky == agentID) |
271 | MainServer.Instance.RemovePollServiceHTTPHandler("", eqgPath); | 263 | // { |
272 | 264 | // removeitems.Add(ky); | |
273 | // m_log.DebugFormat( | 265 | // } |
274 | // "[EVENT QUEUE GET MODULE]: Removed EQG handler {0} for {1} in {2}", | 266 | // } |
275 | // eqgPath, agentID, m_scene.RegionInfo.RegionName); | 267 | // |
276 | } | 268 | // foreach (UUID ky in removeitems) |
277 | } | 269 | // { |
270 | // UUID eventQueueGetUuid = m_AvatarQueueUUIDMapping[ky]; | ||
271 | // m_AvatarQueueUUIDMapping.Remove(ky); | ||
272 | // | ||
273 | // string eqgPath = GenerateEqgCapPath(eventQueueGetUuid); | ||
274 | // MainServer.Instance.RemovePollServiceHTTPHandler("", eqgPath); | ||
275 | // | ||
276 | //// m_log.DebugFormat( | ||
277 | //// "[EVENT QUEUE GET MODULE]: Removed EQG handler {0} for {1} in {2}", | ||
278 | //// eqgPath, agentID, m_scene.RegionInfo.RegionName); | ||
279 | // } | ||
280 | // } | ||
278 | 281 | ||
279 | UUID searchval = UUID.Zero; | 282 | UUID searchval = UUID.Zero; |
280 | 283 | ||
@@ -359,29 +362,10 @@ namespace OpenSim.Region.ClientStack.Linden | |||
359 | m_AvatarQueueUUIDMapping.Add(agentID, eventQueueGetUUID); | 362 | m_AvatarQueueUUIDMapping.Add(agentID, eventQueueGetUUID); |
360 | } | 363 | } |
361 | 364 | ||
362 | string eventQueueGetPath = GenerateEqgCapPath(eventQueueGetUUID); | 365 | caps.RegisterPollHandler( |
363 | 366 | "EventQueueGet", | |
364 | // Register this as a caps handler | 367 | new PollServiceEventArgs( |
365 | // FIXME: Confusingly, we need to register separate as a capability so that the client is told about | 368 | null, GenerateEqgCapPath(eventQueueGetUUID), HasEvents, GetEvents, NoEvents, agentID, 40000)); |
366 | // EventQueueGet when it receive capability information, but then we replace the rest handler immediately | ||
367 | // afterwards with the poll service. So for now, we'll pass a null instead to simplify code reading, but | ||
368 | // really it should be possible to directly register the poll handler as a capability. | ||
369 | caps.RegisterHandler( | ||
370 | "EventQueueGet", new RestHTTPHandler("POST", eventQueueGetPath, null, "EventQueueGet", null)); | ||
371 | // delegate(Hashtable m_dhttpMethod) | ||
372 | // { | ||
373 | // return ProcessQueue(m_dhttpMethod, agentID, caps); | ||
374 | // })); | ||
375 | |||
376 | // This will persist this beyond the expiry of the caps handlers | ||
377 | // TODO: Add EventQueueGet name/description for diagnostics | ||
378 | MainServer.Instance.AddPollServiceHTTPHandler( | ||
379 | eventQueueGetPath, | ||
380 | new PollServiceEventArgs(null, eventQueueGetPath, HasEvents, GetEvents, NoEvents, agentID, 40000)); | ||
381 | |||
382 | // m_log.DebugFormat( | ||
383 | // "[EVENT QUEUE GET MODULE]: Registered EQG handler {0} for {1} in {2}", | ||
384 | // eventQueueGetPath, agentID, m_scene.RegionInfo.RegionName); | ||
385 | 369 | ||
386 | Random rnd = new Random(Environment.TickCount); | 370 | Random rnd = new Random(Environment.TickCount); |
387 | lock (m_ids) | 371 | lock (m_ids) |