public override void provideCustomDeleteOperation(MemoryIndex targetIndex, IIndexDefinition targetDefinition) { if (targetDefinition.Array != null) { writeableTargetStructure.RemoveArray(targetIndex, targetDefinition.Array); } if (targetDefinition.Aliases != null) { foreach (MemoryIndex aliasIndex in targetDefinition.Aliases.MustAliases) { MemoryAliasInfo aliasInfo = mergeWorker.getAliasInfo(aliasIndex); aliasInfo.AddRemovedAlias(targetIndex); } foreach (MemoryIndex aliasIndex in targetDefinition.Aliases.MayAliases) { MemoryAliasInfo aliasInfo = mergeWorker.getAliasInfo(aliasIndex); aliasInfo.AddRemovedAlias(targetIndex); } } writeableTargetStructure.RemoveIndex(targetIndex); }
/// <summary> /// Processes the delete operation. /// </summary> /// <param name="operation">The operation.</param> private void processDeleteOperation(MergeOperation operation) { MemoryIndex targetIndex = operation.TargetIndex; IIndexDefinition targetDefinition; // Index is set in target snapshot if (targetStructure.TryGetIndexDefinition(targetIndex, out targetDefinition)) { // Delete array and enqueue deletein operations if exists if (targetDefinition.Array != null) { DeleteArray(targetIndex, targetDefinition.Array); } // Delete aliases if any if (targetDefinition.Aliases != null && targetDefinition.Aliases.HasAliases) { deleteAliases(targetIndex, targetDefinition.Aliases); } // Removes index from target structure writeableTargetStructure.RemoveIndex(targetIndex); } }