Ejemplo n.º 1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: void checkForDuplicate(org.neo4j.values.storable.Value propertyValue, long nodeId) throws org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException
            internal override void CheckForDuplicate(Value propertyValue, long nodeId)
            {
                BucketEntry current = BucketEntrySet(propertyValue.GetHashCode(), BucketSetSize);

                // We either have to find the first conflicting entry set element,
                // or append one for the property we just fetched:
                do
                {
                    for (int i = 0; i < BucketSetSize; i++)
                    {
                        Value value = ( Value )current.Value[i];

                        if (current.NodeId[i] == StatementConstants.NO_SUCH_NODE)
                        {
                            current.Value[i]  = propertyValue;
                            current.NodeId[i] = nodeId;
                            if (i == BucketSetSize - 1)
                            {
                                current.Next = new BucketEntry(BucketSetSize);
                            }
                            goto scanBreak;
                        }
                        else if (propertyValue.Equals(value))
                        {
                            throw new IndexEntryConflictException(current.NodeId[i], nodeId, value);
                        }
                    }
                    current = current.Next;
                } while (current != null);
            }
Ejemplo n.º 2
0
 QueryResult.ItemFlags ReplaceIfCloser(
     ref QueryResult.Item item, QueryResult.ItemFlags itemFlag,
     BucketEntry e, float distance, bool replace)
 {
     replace    = replace && item.Distance > distance;
     item.Value = math.select(item.Value, new float2(distance, e.Speed), replace);
     return((QueryResult.ItemFlags)math.select(0, (int)itemFlag, replace));
 }
 public static void Encode(IByteWriter stream, BucketEntry encodedBucketEntry) {
 XdrEncoding.EncodeInt32((int)encodedBucketEntry.Discriminant.InnerValue, stream);
 switch (encodedBucketEntry.Discriminant.InnerValue) {
 case BucketEntryType.BucketEntryTypeEnum.LIVEENTRY:
 LedgerEntry.Encode(stream, encodedBucketEntry.LiveEntry);
 break;
 case BucketEntryType.BucketEntryTypeEnum.DEADENTRY:
 LedgerKey.Encode(stream, encodedBucketEntry.DeadEntry);
 break;
 }
 }
Ejemplo n.º 4
0
        /// <summary>
        ///     Retrieves an entry from the internal dictionary, creating a new one and inserting it if otherwise.
        /// </summary>
        /// <param name="key">The key to be used in this bucket.</param>
        /// <returns>A <seealso cref="BucketEntry" /> entry.</returns>
        private BucketEntry Upsert([NotNull] TKey key)
        {
            if (Entries.TryGetValue(key, out var existingValue))
            {
                return(existingValue);
            }
            var newValue = new BucketEntry();

            Entries.Add(key, newValue);
            return(newValue);
        }
Ejemplo n.º 5
0
            internal virtual BucketEntry BucketEntrySet(int hashCode, int entrySetSize)
            {
                int         bucket  = Math.Abs(hashCode) % NumberOfBuckets;
                BucketEntry current = Buckets[bucket];

                if (current == null)
                {
                    current         = new BucketEntry(entrySetSize);
                    Buckets[bucket] = current;
                }
                return(current);
            }
 public static BucketEntry Decode(IByteReader stream) {
   BucketEntry decodedBucketEntry = new BucketEntry();
 decodedBucketEntry.Discriminant = BucketEntryType.Decode(stream);
 switch (decodedBucketEntry.Discriminant.InnerValue) {
 case BucketEntryType.BucketEntryTypeEnum.LIVEENTRY:
 decodedBucketEntry.LiveEntry = LedgerEntry.Decode(stream);
 break;
 case BucketEntryType.BucketEntryTypeEnum.DEADENTRY:
 decodedBucketEntry.DeadEntry = LedgerKey.Decode(stream);
 break;
 }
   return decodedBucketEntry;
 }
        public static void Encode(IByteWriter stream, BucketEntry encodedBucketEntry)
        {
            XdrEncoding.EncodeInt32((int)encodedBucketEntry.Discriminant.InnerValue, stream);
            switch (encodedBucketEntry.Discriminant.InnerValue)
            {
            case BucketEntryType.BucketEntryTypeEnum.LIVEENTRY:
                LedgerEntry.Encode(stream, encodedBucketEntry.LiveEntry);
                break;

            case BucketEntryType.BucketEntryTypeEnum.DEADENTRY:
                LedgerKey.Encode(stream, encodedBucketEntry.DeadEntry);
                break;
            }
        }
Ejemplo n.º 8
0
        public static void Encode(XdrDataOutputStream stream, BucketEntry encodedBucketEntry)
        {
            stream.WriteInt((int)encodedBucketEntry.Discriminant.InnerValue);
            switch (encodedBucketEntry.Discriminant.InnerValue)
            {
            case BucketEntryType.BucketEntryTypeEnum.LIVEENTRY:
                LedgerEntry.Encode(stream, encodedBucketEntry.LiveEntry);
                break;

            case BucketEntryType.BucketEntryTypeEnum.DEADENTRY:
                LedgerKey.Encode(stream, encodedBucketEntry.DeadEntry);
                break;
            }
        }
        public static BucketEntry Decode(IByteReader stream)
        {
            BucketEntry decodedBucketEntry = new BucketEntry();

            decodedBucketEntry.Discriminant = BucketEntryType.Decode(stream);
            switch (decodedBucketEntry.Discriminant.InnerValue)
            {
            case BucketEntryType.BucketEntryTypeEnum.LIVEENTRY:
                decodedBucketEntry.LiveEntry = LedgerEntry.Decode(stream);
                break;

            case BucketEntryType.BucketEntryTypeEnum.DEADENTRY:
                decodedBucketEntry.DeadEntry = LedgerKey.Decode(stream);
                break;
            }
            return(decodedBucketEntry);
        }
Ejemplo n.º 10
0
        public static BucketEntry Decode(XdrDataInputStream stream)
        {
            var decodedBucketEntry = new BucketEntry();
            var discriminant       = BucketEntryType.Decode(stream);

            decodedBucketEntry.Discriminant = discriminant;
            switch (decodedBucketEntry.Discriminant.InnerValue)
            {
            case BucketEntryType.BucketEntryTypeEnum.LIVEENTRY:
                decodedBucketEntry.LiveEntry = LedgerEntry.Decode(stream);
                break;

            case BucketEntryType.BucketEntryTypeEnum.DEADENTRY:
                decodedBucketEntry.DeadEntry = LedgerKey.Decode(stream);
                break;
            }
            return(decodedBucketEntry);
        }