public boolean put()

in fix/core/src/main/java/deltix/connector/fix/mapper/OrderIdCache.java [305:362]


        public boolean put(final AsciiStringBuilder key, final long value) {
            int hidx = hashIndex(key);
            int idx = find(hidx, key);

            if (idx != NULL) {
                evict(idx);
                values[idx] = value;

                if (idx != insertLast) { // is not last inserted
                    final int prevIndex = insertList[2 * idx];     // curr.prev
                    final int nextIndex = insertList[2 * idx + 1]; // curr.next

                    if (prevIndex == NULL) {
                        insertFirst = nextIndex;                   // first = curr.next
                    } else {
                        insertList[2 * prevIndex + 1] = nextIndex; // prev.next = curr.next
                    }

                    insertList[2 * nextIndex] = prevIndex;         // next.prev = curr.prev
                    insertList[2 * insertLast + 1] = idx;          // last.next = curr

                    insertList[2 * idx] = insertLast;              // curr.prev = last
                    insertList[2 * idx + 1] = NULL;                // curr.next = null

                    insertLast = idx;                              // last = curr
                }

                return (false);
            }

            if (freeHead == NULL) {
                final int index = insertFirst;                   // curr
                final int nextIndex = insertList[2 * index + 1]; // next

                insertList[2 * nextIndex] = NULL; // next.prev = null
                insertFirst = nextIndex;          // first = next

                free(index);
            }

            idx = allocEntry(hidx);                     // curr

            if (insertLast == NULL) {
                insertFirst = idx;                      // first = curr
            } else {
                insertList[2 * insertLast + 1] = idx;   // last.next = curr
            }

            insertList[2 * idx] = insertLast;           // curr.prev = last
            insertList[2 * idx + 1] = NULL;             // curr.next = null

            insertLast = idx;                           // last = curr

            values[idx] = value;
            putKey(idx, key);

            return (true);
        }