internal void Delete(ref DeferredEventList deferredEventList) { // we cannot fire an event here because this method is called while the LineManager adjusts the // lineCollection, so an event handler could see inconsistent state lineSegment = null; deferredEventList.AddDeletedAnchor(this); }
/// <summary> /// Removes expired events /// </summary> public void DoExpirations() { while (_sortedEvents.Count > 0) { DeferredEventList list = _sortedEvents.FindMin(); if (Util.Clock.GetLongTickCount() >= list.ExpiresOn) { Delete(list); } else { break; } } }
internal void AddGroupCrossedAvatarsReadyEvent(Tuple <UUID, UUID> scriptIdUserId) { DeferredEventList eventList; if (_eventsByScript.TryGetValue(scriptIdUserId.Item1, out eventList)) { eventList.GroupCrossedAvatarsReadyList.Add(scriptIdUserId.Item2); } else { eventList = new DeferredEventList(scriptIdUserId.Item1); eventList.GroupCrossedAvatarsReadyList.Add(scriptIdUserId.Item2); _eventsByScript.Add(scriptIdUserId.Item1, eventList); C5.IPriorityQueueHandle <DeferredEventList> handle = null; _sortedEvents.Add(ref handle, eventList); eventList.Handle = handle; } }
internal void AddEnableDisableEvent(UUID itemId, EnableDisableFlag enableDisableFlag) { DeferredEventList eventList; if (_eventsByScript.TryGetValue(itemId, out eventList)) { eventList.EnableDisableList.Add(enableDisableFlag); } else { eventList = new DeferredEventList(itemId); eventList.EnableDisableList.Add(enableDisableFlag); _eventsByScript.Add(itemId, eventList); C5.IPriorityQueueHandle <DeferredEventList> handle = null; _sortedEvents.Add(ref handle, eventList); eventList.Handle = handle; } }
/// <summary> /// Add a new deferred event /// </summary> /// <param name="itemId"></param> /// <param name="eventInfo"></param> public void AddEvent(UUID itemId, VM.PostedEvent eventInfo) { DeferredEventList eventList; if (_eventsByScript.TryGetValue(itemId, out eventList)) { if (eventList.EvtList.Count < MAX_DEFERRED_EVENTS) { eventList.EvtList.Add(eventInfo); } } else { eventList = new DeferredEventList(itemId); eventList.EvtList.Add(eventInfo); _eventsByScript.Add(itemId, eventList); C5.IPriorityQueueHandle <DeferredEventList> handle = null; _sortedEvents.Add(ref handle, eventList); eventList.Handle = handle; } }
private void Delete(DeferredEventList eventList) { _sortedEvents.Delete(eventList.Handle); _eventsByScript.Remove(eventList.ItemId); }