当前位置: 首页>>代码示例>>C#>>正文


C# OpenSim.Framework.Capabilities.Caps.RegisterPollHandler方法代码示例

本文整理汇总了C#中OpenSim.Framework.Capabilities.Caps.RegisterPollHandler方法的典型用法代码示例。如果您正苦于以下问题:C# OpenSim.Framework.Capabilities.Caps.RegisterPollHandler方法的具体用法?C# OpenSim.Framework.Capabilities.Caps.RegisterPollHandler怎么用?C# OpenSim.Framework.Capabilities.Caps.RegisterPollHandler使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在OpenSim.Framework.Capabilities.Caps的用法示例。


在下文中一共展示了OpenSim.Framework.Capabilities.Caps.RegisterPollHandler方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: OnRegisterCaps

        public void OnRegisterCaps(UUID agentID, Caps caps)
        {
            // Register an event queue for the client

            if (DebugLevel > 0)
                m_log.DebugFormat(
                    "[EVENTQUEUE]: OnRegisterCaps: agentID {0} caps {1} region {2}",
                    agentID, caps, m_scene.RegionInfo.RegionName);

            // Let's instantiate a Queue for this agent right now
            TryGetQueue(agentID);

            UUID eventQueueGetUUID;

            lock (m_AvatarQueueUUIDMapping)
            {
                // Reuse open queues.  The client does!
                if (m_AvatarQueueUUIDMapping.ContainsKey(agentID))
                {
                    //m_log.DebugFormat("[EVENTQUEUE]: Found Existing UUID!");
                    eventQueueGetUUID = m_AvatarQueueUUIDMapping[agentID];
                }
                else
                {
                    eventQueueGetUUID = UUID.Random();
                    //m_log.DebugFormat("[EVENTQUEUE]: Using random UUID!");
                }
            }

            lock (m_QueueUUIDAvatarMapping)
            {
                if (!m_QueueUUIDAvatarMapping.ContainsKey(eventQueueGetUUID))
                    m_QueueUUIDAvatarMapping.Add(eventQueueGetUUID, agentID);
            }

            lock (m_AvatarQueueUUIDMapping)
            {
                if (!m_AvatarQueueUUIDMapping.ContainsKey(agentID))
                    m_AvatarQueueUUIDMapping.Add(agentID, eventQueueGetUUID);
            }

            caps.RegisterPollHandler(
                "EventQueueGet",
                new PollServiceEventArgs(null, GenerateEqgCapPath(eventQueueGetUUID), HasEvents, GetEvents, NoEvents, agentID, SERVER_EQ_TIME_NO_EVENTS));

            Random rnd = new Random(Environment.TickCount);
            lock (m_ids)
            {
                if (!m_ids.ContainsKey(agentID))
                    m_ids.Add(agentID, rnd.Next(30000000));
            }
        }
开发者ID:RadaSangOn,项目名称:workCore2,代码行数:52,代码来源:EventQueueGetModule.cs

示例2: OnRegisterCaps

        public void OnRegisterCaps(UUID agentID, Caps caps)
        {
            // Register an event queue for the client

            m_log.DebugFormat(
                "[EVENTQUEUE]: OnRegisterCaps: agentID {0} caps {1} region {2}",
                agentID, caps, m_scene.RegionInfo.RegionName);

            // Let's instantiate a Queue for this agent right now
            TryGetQueue(agentID);

            UUID eventQueueGetUUID;

            eventQueueGetUUID = m_AvatarQueueUUIDMapping.GetOrAddIfNotExists(agentID, delegate() { return UUID.Random(); });

            m_QueueUUIDAvatarMapping[eventQueueGetUUID] = agentID;
            m_AvatarQueueUUIDMapping[agentID] = eventQueueGetUUID;

            caps.RegisterPollHandler(
                "EventQueueGet",
                new PollServiceEventArgs(null, GenerateEqgCapPath(eventQueueGetUUID), HasEvents, GetEvents, NoEvents, agentID, SERVER_EQ_TIME_NO_EVENTS));

            Random rnd = new Random(Environment.TickCount);
            try
            {
                m_ids.AddIfNotExists(agentID, delegate() { return rnd.Next(30000000); });
            }
            catch(ThreadedClasses.RwLockedDictionary<UUID, int>.KeyAlreadyExistsException)
            {

            }
        }
开发者ID:BogusCurry,项目名称:arribasim-dev,代码行数:32,代码来源:EventQueueGetModule.cs

示例3: OnRegisterCaps

        public void OnRegisterCaps(UUID agentID, Caps caps)
        {
            // Register an event queue for the client

            if (DebugLevel > 0)
                m_log.DebugFormat(
                    "[EVENTQUEUE]: OnRegisterCaps: agentID {0} caps {1} region {2}",
                    agentID, caps, m_scene.RegionInfo.RegionName);

            UUID eventQueueGetUUID;
            Queue<OSD> queue;
            Random rnd = new Random(Environment.TickCount);
            int nrnd = rnd.Next(30000000);
            if (nrnd < 0)
                nrnd = -nrnd;

            lock (queues)
            {
                if (queues.ContainsKey(agentID))
                    queue = queues[agentID];
                else
                    queue = null;

                if (queue == null)
                {
                    queue = new Queue<OSD>();
                    queues[agentID] = queue;

                    // push markers to handle old responses still waiting
                    // this will cost at most viewer getting two forced noevents
                    // even being a new queue better be safe 
                    queue.Enqueue(null);
                    queue.Enqueue(null); // one should be enough
                    
                    lock (m_AvatarQueueUUIDMapping)
                    {
                        eventQueueGetUUID = UUID.Random();
                        if (m_AvatarQueueUUIDMapping.ContainsKey(agentID))
                        {
                            // oops this should not happen ?
                            m_log.DebugFormat("[EVENTQUEUE]: Found Existing UUID without a queue");
                            eventQueueGetUUID = m_AvatarQueueUUIDMapping[agentID];
                        }
                        m_AvatarQueueUUIDMapping.Add(agentID, eventQueueGetUUID);
                    }
                    lock (m_ids)
                    {
                        if (!m_ids.ContainsKey(agentID))
                            m_ids.Add(agentID, nrnd);
                        else
                            m_ids[agentID] = nrnd;
                    }
                }
                else
                {
                    // push markers to handle old responses still waiting
                    // this will cost at most viewer getting two forced noevents
                    // even being a new queue better be safe 
                    queue.Enqueue(null);
                    queue.Enqueue(null); // one should be enough

                    // reuse or not to reuse TODO FIX
                    lock (m_AvatarQueueUUIDMapping)
                    {
                        // Reuse open queues.  The client does!
                        // Its reuse caps path not queues those are been reused already
                        if (m_AvatarQueueUUIDMapping.ContainsKey(agentID))
                        {
                            m_log.DebugFormat("[EVENTQUEUE]: Found Existing UUID!");
                            eventQueueGetUUID = m_AvatarQueueUUIDMapping[agentID];
                        }
                        else
                        {
                            eventQueueGetUUID = UUID.Random();
                            m_AvatarQueueUUIDMapping.Add(agentID, eventQueueGetUUID);
                            m_log.DebugFormat("[EVENTQUEUE]: Using random UUID!");
                        }
                    }
                    lock (m_ids)
                    {
                        // change to negative numbers so they are changed at end of sending first marker
                        // old data on a queue may be sent on a response for a new caps
                        // but at least will be sent with coerent IDs
                        if (!m_ids.ContainsKey(agentID))
                            m_ids.Add(agentID, -nrnd); // should not happen
                        else
                            m_ids[agentID] = -m_ids[agentID];
                    }
                }
            }

            caps.RegisterPollHandler(
                "EventQueueGet",
                new PollServiceEventArgs(null, GenerateEqgCapPath(eventQueueGetUUID), HasEvents, GetEvents, NoEvents, agentID, SERVER_EQ_TIME_NO_EVENTS));
        }
开发者ID:CassieEllen,项目名称:opensim,代码行数:95,代码来源:EventQueueGetModule.cs


注:本文中的OpenSim.Framework.Capabilities.Caps.RegisterPollHandler方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。