Inheritance: IWorldCommListenerInfo
 protected void QueueMessage(ListenerInfo li)
 {
     //Make sure that the cmd handler thread is running
     m_scriptModule.PokeThreads(li.GetItemID());
     lock (m_pending.SyncRoot) {
         m_pending.Enqueue(li);
     }
 }
        /// <summary>
        ///     Pop the first available listen event from the queue
        /// </summary>
        /// <returns>ListenerInfo with filter filled in</returns>
        public IWorldCommListenerInfo GetNextMessage()
        {
            ListenerInfo li = null;

            lock (m_pending.SyncRoot) {
                li = (ListenerInfo)m_pending.Dequeue();
            }

            return(li);
        }
        public void AddFromData(UUID itemID, UUID hostID,
                                OSD data)
        {
            OSDMap save = (OSDMap)data;

            foreach (KeyValuePair <string, OSD> kvp in save)
            {
                OSDMap       item = (OSDMap)kvp.Value;
                ListenerInfo info = ListenerInfo.FromData(itemID, hostID, item);
                AddListener(info.GetItemID(), info.GetHostID(), info.GetChannel(), info.GetName(), info.GetID(),
                            info.GetMessage(), info.RegexBitfield);
            }
        }
        public static ListenerInfo FromData(UUID ItemID, UUID hostID, OSDMap data)
        {
            int    Handle        = data ["Handle"].AsInteger();
            int    Channel       = data ["Channel"].AsInteger();
            string Name          = data ["Name"].AsString();
            string Message       = data ["Message"].AsString();
            UUID   ID            = data ["ID"].AsUUID();
            bool   Active        = data ["Active"].AsBoolean();
            int    RegexBitfield = data ["RegexBitfield"].AsInteger();

            ListenerInfo linfo = new ListenerInfo(Handle,
                                                  ItemID, hostID, Channel, Name,
                                                  ID, Message, RegexBitfield)
            {
                m_active = Active
            };

            return(linfo);
        }
示例#5
0
        public int AddListener(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg, int regexBitfield)
        {
            // do we already have a match on this particular filter event?
            List <ListenerInfo> coll = GetListeners(itemID, channel, name, id, msg);

            if (coll.Count > 0)
            {
                // special case, called with same filter settings, return same handle
                // tested on 1.21.1 server, still holds
                return(coll[0].GetHandle());
            }

            if (m_curlisteners < m_maxlisteners)
            {
                lock (m_listeners)
                {
                    int newHandle = GetNewHandle(itemID);

                    if (newHandle > 0)
                    {
                        ListenerInfo li = new ListenerInfo(newHandle, itemID, hostID, channel, name, id, msg, regexBitfield);

                        List <ListenerInfo> listeners;
                        if (!m_listeners.TryGetValue(channel, out listeners))
                        {
                            listeners = new List <ListenerInfo>();
                            m_listeners.Add(channel, listeners);
                        }
                        listeners.Add(li);
                        m_curlisteners++;

                        return(newHandle);
                    }
                }
            }
            return(-1);
        }
 protected void QueueMessage(ListenerInfo li)
 {
     //Make sure that the cmd handler thread is running
     m_scriptModule.PokeThreads(li.GetItemID());
     lock (m_pending.SyncRoot)
     {
         m_pending.Enqueue(li);
     }
 }
        public int AddListener(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg, int regexBitfield)
        {
            // do we already have a match on this particular filter event?
            List<ListenerInfo> coll = GetListeners(itemID, channel, name, id, msg);

            if (coll.Count > 0)
            {
                // special case, called with same filter settings, return same handle
                // tested on 1.21.1 server, still holds
                return coll[0].GetHandle();
            }

            if (m_curlisteners < m_maxlisteners)
            {
                lock (m_listeners)
                {
                    int newHandle = GetNewHandle(itemID);

                    if (newHandle > 0)
                    {
                        ListenerInfo li = new ListenerInfo(newHandle, itemID, hostID, channel, name, id, msg, regexBitfield);

                        List<ListenerInfo> listeners;
                        if (!m_listeners.TryGetValue(channel, out listeners))
                        {
                            listeners = new List<ListenerInfo>();
                            m_listeners.Add(channel, listeners);
                        }
                        listeners.Add(li);
                        m_curlisteners++;

                        return newHandle;
                    }
                }
            }
            return -1;
        }
        public static ListenerInfo FromData(UUID ItemID, UUID hostID, OSDMap data)
        {
            int Handle = data["Handle"].AsInteger();
            int Channel = data["Channel"].AsInteger();
            string Name = data["Name"].AsString();
            string Message = data["Message"].AsString();
            UUID ID = data["ID"].AsUUID();
            bool Active = data["Active"].AsBoolean();
            int RegexBitfield = data["RegexBitfield"].AsInteger();

            ListenerInfo linfo = new ListenerInfo(Handle,
                                                  ItemID, hostID, Channel, Name,
                                                  ID, Message, RegexBitfield) { m_active = Active };

            return linfo;
        }
 public ListenerInfo(ListenerInfo li, string name, UUID id, string message)
 {
     Initialise(li.m_handle, li.m_itemID, li.m_hostID, li.m_channel, name, id, message, 0);
 }
 public ListenerInfo(ListenerInfo li, string name, UUID id, string message)
 {
     Initialize(li.m_handle, li.m_itemID, li.m_hostID, li.m_channel, name, id, message, 0);
 }