private void QueueRemoveFromIndex(ushort[] key) { if (QueueChanges) { PendingIndexChanges.Enqueue(new IndexOperation { Key = key, IndexOperationType = IndexOperationType.Remove }); } else { SelectorXref.Remove(key); } }
/// <summary> /// Add an element to the index using a specified index key. /// </summary> /// /// <param name="key"> /// The key /// </param> /// <param name="element"> /// The element target /// </param> private void QueueAddToIndex(ushort[] key, IDomIndexedNode element) { if (QueueChanges) { PendingIndexChanges.Enqueue(new IndexOperation { Key = key, Value = element.IndexReference, IndexOperationType = IndexOperationType.Add }); } else { SelectorXref.Add(key, element.IndexReference); } }
private void ProcessQueue() { if (_PendingIndexChanges == null) { return; } while (PendingIndexChanges.Count > 0) { var item = PendingIndexChanges.Dequeue(); switch (item.IndexOperationType) { case IndexOperationType.Add: SelectorXref.Add(item.Key, item.Value); break; case IndexOperationType.Remove: SelectorXref.Remove(item.Key); break; } } }