// private void DeregisterCaps(UUID agentID, Caps caps) // { // string capUrl; // // if (m_capsDict.TryGetValue(agentID, out capUrl)) // { // MainServer.Instance.RemoveHTTPHandler("", capUrl); // m_capsDict.Remove(agentID); // } // } private static void DoInventoryRequests() { while (true) { aPollRequest poolreq = m_queue.Dequeue(4500); Watchdog.UpdateThread(); if (poolreq != null && poolreq.thepoll != null) { try { poolreq.thepoll.Process(poolreq); } catch (Exception e) { m_log.ErrorFormat( "[INVENTORY]: Failed to process queued inventory request {0} for {1}. Exception {2}", poolreq.reqID, poolreq.presence != null ? poolreq.presence.Name : "unknown", e); } } } }
/// <summary> /// Processing thread main() loop for doing remote mapitem requests /// </summary> public void process() { try { while (true) { MapRequestState st = requests.Dequeue(); // end gracefully if (st.agentID == UUID.Zero) { ThreadTracker.Remove(mapItemReqThread); break; } bool dorequest = true; lock (m_rootAgents) { if (!m_rootAgents.Contains(st.agentID)) { dorequest = false; } } if (dorequest) { OSDMap response = RequestMapItemsAsync("", st.agentID, st.flags, st.EstateID, st.godlike, st.itemtype, st.regionhandle); RequestMapItemsCompleted(response); } } } catch (Exception e) { m_log.ErrorFormat("[WORLD MAP]: Map item request thread terminated abnormally with exception {0}", e); } threadrunning = false; }
private void DoWork() { m_mesher.ExpireFileCache(); while (m_running) { ODEPhysRepData nextRep = workQueue.Dequeue(); if (!m_running) { return; } if (nextRep == null) { continue; } if (m_scene.haveActor(nextRep.actor)) { switch (nextRep.comand) { case meshWorkerCmnds.changefull: case meshWorkerCmnds.changeshapetype: case meshWorkerCmnds.changesize: GetMesh(nextRep); if (CreateActorPhysRep(nextRep) && m_scene.haveActor(nextRep.actor)) { m_scene.AddChange(nextRep.actor, changes.PhysRepData, nextRep); } break; case meshWorkerCmnds.getmesh: DoRepDataGetMesh(nextRep); break; } } } }