Beispiel #1
0
//        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);
                    }
                }
            }
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #3
0
        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;
                    }
                }
            }
        }