public void AddFromData(uint localID, UUID itemID, UUID hostID, Object[] data) { int idx = 0; Object[] item = new Object[6]; while (idx < data.Length) { Array.Copy(data, idx, item, 0, 6); ListenerInfo info = ListenerInfo.FromData(localID, itemID, hostID, item); lock (m_listeners) { if (!m_listeners.ContainsKey((int)item[2])) { m_listeners.Add((int)item[2], new List <ListenerInfo>()); } m_listeners[(int)item[2]].Add(info); } idx += 6; } }
protected void QueueMessage(ListenerInfo li) { lock (m_pending.SyncRoot) { m_pending.Enqueue(li); } }
public void AddFromData(uint localID, UUID itemID, UUID hostID, Object[] data) { int idx = 0; Object[] item = new Object[6]; int dataItemLength = 6; while (idx < data.Length) { dataItemLength = (idx + 7 == data.Length || (idx + 7 < data.Length && data[idx + 7] is bool)) ? 7 : 6; item = new Object[dataItemLength]; Array.Copy(data, idx, item, 0, dataItemLength); ListenerInfo info = ListenerInfo.FromData(localID, itemID, hostID, item); m_ListenerRwLock.AcquireWriterLock(-1); try { if (!m_listeners.ContainsKey((int)item[2])) { m_listeners.Add((int)item[2], new List <ListenerInfo>()); } m_listeners[(int)item[2]].Add(info); } finally { m_ListenerRwLock.ReleaseWriterLock(); } idx += dataItemLength; } }
public void AddFromData(uint localID, UUID itemID, UUID hostID, Object[] data) { int idx = 0; Object[] item = new Object[6]; int dataItemLength = 6; while (idx < data.Length) { dataItemLength = (idx + 7 == data.Length || (idx + 7 < data.Length && data[idx + 7] is bool)) ? 7 : 6; item = new Object[dataItemLength]; Array.Copy(data, idx, item, 0, dataItemLength); ListenerInfo info = ListenerInfo.FromData(localID, itemID, hostID, item); lock (mainLock) { if (!m_listenersByChannel.ContainsKey((int)item[2])) { m_listenersByChannel.Add((int)item[2], new List <ListenerInfo>()); } m_listenersByChannel[(int)item[2]].Add(info); } idx += dataItemLength; } }
protected void QueueMessage(ListenerInfo li) { //Make sure that the cmd handler thread is running m_scriptModule.PokeThreads(); lock (m_pending.SyncRoot) { m_pending.Enqueue(li); } }
public static ListenerInfo FromData(uint localID, UUID ItemID, UUID hostID, Object[] data) { ListenerInfo linfo = new ListenerInfo((int)data[1], localID, ItemID, hostID, (int)data[2], (string)data[3], (UUID)data[4], (string)data[5]); linfo.m_active = (bool)data[0]; return(linfo); }
/// <summary> /// Pop the first availlable 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()); } }
public static ListenerInfo FromData(uint localID, UUID ItemID, UUID hostID, Object[] data) { ListenerInfo linfo = new ListenerInfo((int)data[1], localID, ItemID, hostID, (int)data[2], (string)data[3], (UUID)data[4], (string)data[5]); linfo.m_active = (bool)data[0]; if (data.Length >= 7) { linfo.RegexBitfield = (int)data[6]; } return(linfo); }
public int AddListener(uint localID, 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 (2008-05-02, tested on 1.21.1 server, still holds) return(coll[0].GetHandle()); } if (m_curlisteners < m_maxlisteners) { m_ListenerRwLock.AcquireWriterLock(-1); try { int newHandle = GetNewHandle(itemID); if (newHandle > 0) { ListenerInfo li = new ListenerInfo(newHandle, localID, 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); } } finally { m_ListenerRwLock.ReleaseWriterLock(); } } 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(); ListenerInfo linfo = new ListenerInfo(Handle, ItemID, hostID, Channel, Name, ID, Message); linfo.m_active = Active; return(linfo); }
public int AddListener(uint localID, 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 (2008-05-02, tested on 1.21.1 server, still holds) return(coll[0].GetHandle()); } if (m_curlisteners < m_maxlisteners) { lock (m_listeners) /* serialize handle creation here */ { int newHandle = GetNewHandle(itemID); if (newHandle > 0) { ListenerInfo li = new ListenerInfo(newHandle, localID, itemID, hostID, channel, name, id, msg, regexBitfield); ThreadedClasses.RwLockedList <ListenerInfo> listeners = m_listeners.GetOrAddIfNotExists(channel, delegate() { return(new ThreadedClasses.RwLockedList <ListenerInfo>()); }); listeners.Add(li); Interlocked.Increment(ref m_curlisteners); return(newHandle); } } } return(-1); }
public void AddFromData(uint localID, UUID itemID, UUID hostID, Object[] data) { int idx = 0; Object[] item = new Object[6]; int dataItemLength = 6; while (idx < data.Length) { dataItemLength = (idx + 7 == data.Length || (idx + 7 < data.Length && data[idx + 7] is bool)) ? 7 : 6; item = new Object[dataItemLength]; Array.Copy(data, idx, item, 0, dataItemLength); ListenerInfo info = ListenerInfo.FromData(localID, itemID, hostID, item); ThreadedClasses.RwLockedList <ListenerInfo> li = m_listeners.GetOrAddIfNotExists((int)item[2], delegate() { return(new ThreadedClasses.RwLockedList <ListenerInfo>()); }); li.Add(info); idx += dataItemLength; } }
public ListenerInfo(ListenerInfo li, string name, UUID id, string message, int regexBitfield) { Initialise(li.m_handle, li.m_localID, li.m_itemID, li.m_hostID, li.m_channel, name, id, message, regexBitfield); }
protected void QueueMessage(ListenerInfo li) { m_pending.Enqueue(li); }
public int AddListener(uint localID, 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 (2008-05-02, tested on 1.21.1 server, still holds) return coll[0].GetHandle(); } if (m_curlisteners < m_maxlisteners) { lock(m_listeners) /* serialize handle creation here */ { int newHandle = GetNewHandle(itemID); if (newHandle > 0) { ListenerInfo li = new ListenerInfo(newHandle, localID, itemID, hostID, channel, name, id, msg, regexBitfield); ThreadedClasses.RwLockedList<ListenerInfo> listeners = m_listeners.GetOrAddIfNotExists(channel, delegate() { return new ThreadedClasses.RwLockedList<ListenerInfo>(); }); listeners.Add(li); Interlocked.Increment(ref m_curlisteners); return newHandle; } } } return -1; }
protected void QueueMessage(ListenerInfo li) { //Make sure that the cmd handler thread is running m_scriptModule.PokeThreads (); lock (m_pending.SyncRoot) { m_pending.Enqueue(li); } }
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); }
protected void QueueMessage(ListenerInfo li) { m_pending.Enqueue(li); }
public ListenerInfo(ListenerInfo li, string name, UUID id, string message, int regexBitfield) { Initialise(li.m_handle, li.m_localID, li.m_itemID, li.m_hostID, li.m_channel, name, id, message, regexBitfield); }
protected void QueueMessage(ListenerInfo li) { lock (m_pending.SyncRoot) { m_pending.Enqueue(li); } }
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 (); ListenerInfo linfo = new ListenerInfo (Handle, ItemID, hostID, Channel, Name, ID, Message); linfo.m_active = Active; return linfo; }
public static ListenerInfo FromData(uint localID, UUID ItemID, UUID hostID, Object[] data) { ListenerInfo linfo = new ListenerInfo((int)data[1], localID, ItemID, hostID, (int)data[2], (string)data[3], (UUID)data[4], (string)data[5]); linfo.m_active=(bool)data[0]; return linfo; }
public int AddListener(uint localID, 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 (2008-05-02, 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, localID, 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 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); }
public static ListenerInfo FromData(uint localID, UUID ItemID, UUID hostID, Object[] data) { ListenerInfo linfo = new ListenerInfo((int)data[1], localID, ItemID, hostID, (int)data[2], (string)data[3], (UUID)data[4], (string)data[5]); linfo.m_active = (bool)data[0]; if (data.Length >= 7) { linfo.RegexBitfield = (int)data[6]; } return linfo; }
public static ListenerInfo FromData(UUID ItemID, UUID hostID, Object[] data) { ListenerInfo linfo = new ListenerInfo(Convert.ToInt32(data[1]), ItemID, hostID, Convert.ToInt32(data[2]), (string)data[3], new UUID(data[4].ToString()), (string)data[5]); linfo.m_active=Convert.ToBoolean(data[0]); return linfo; }