示例#1
0
            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);
            }
示例#2
0
        /// <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);
            }
        }