Exemplo n.º 1
0
        /// <summary>
        /// Removes node
        /// </summary>
        /// <param name="parentNodeId"></param>
        /// <param name="nodeId"></param>
        /// <param name="tran"></param>
        public void RemoveNode(long parentNodeId, long nodeId, DBreeze.Transactions.Transaction tran, bool maximalSpeed = false)
        {
            CheckTransaction(tran);
            SetupWriteTables(tran, maximalSpeed);

            nt2Write.RemoveKey <byte[]>(parentNodeId.To_8_bytes_array_BigEndian().Concat(nodeId.To_8_bytes_array_BigEndian()));
        }
Exemplo n.º 2
0
        }//eo func

        /// <summary>
        /// Internal
        /// </summary>
        /// <param name="nameIndexRow"></param>
        /// <param name="keyToRemove"></param>
        /// <returns>new nameIndexRow</returns>
        void RemoveOldNodeFromNameIndex(string oldNodeName, byte[] keyToRemove)
        {
            var oldNodeNameIndexRow = nt3Write.Select <string, byte[]>(oldNodeName.ToLower());

            if (oldNodeNameIndexRow.Exists)
            {
                byte[]        val  = oldNodeNameIndexRow.Value;
                byte[]        prt  = null;
                int           i    = 0;
                List <byte[]> keys = new List <byte[]>();
                int           size = 0;
                while ((prt = val.Substring(i, 16)) != null)
                {
                    i += 16;
                    if (prt._ByteArrayEquals(keyToRemove))
                    {
                        continue;
                    }
                    size += 16;
                    keys.Add(prt);
                }

                if (keys.Count > 0)
                {
                    byte[] newVal = new byte[size];
                    i = 0;
                    foreach (var key in keys)
                    {
                        newVal.CopyInside(i, key);
                        i += 16;
                    }

                    nt3Write.Insert <string, byte[]>(oldNodeName.ToLower(), newVal);
                }
                else
                {
                    nt3Write.RemoveKey <string>(oldNodeName.ToLower());
                }
            }
        }