|
1 | 1 | // SPDX-License-Identifier: Apache-2.0
|
2 |
| -package com.swirlds.platform.sequence.map.internal; |
| 2 | +package org.hiero.consensus.model.sequence.map; |
3 | 3 |
|
4 |
| -import com.swirlds.platform.sequence.map.SequenceMap; |
| 4 | +import com.swirlds.base.utility.ToStringBuilder; |
5 | 5 | import edu.umd.cs.findbugs.annotations.NonNull;
|
6 | 6 | import java.util.AbstractMap;
|
| 7 | +import java.util.HashSet; |
7 | 8 | import java.util.LinkedList;
|
8 | 9 | import java.util.List;
|
9 | 10 | import java.util.Map;
|
10 | 11 | import java.util.Objects;
|
| 12 | +import java.util.Set; |
11 | 13 | import java.util.function.BiConsumer;
|
12 | 14 | import java.util.function.Function;
|
13 | 15 | import java.util.function.ToLongFunction;
|
@@ -559,4 +561,63 @@ public void clear() {
|
559 | 561 | fullUnlock();
|
560 | 562 | }
|
561 | 563 | }
|
| 564 | + |
| 565 | + /** |
| 566 | + * A set of keys with a particular sequence number. This object is designed to be reused as the allowable |
| 567 | + * window of sequence numbers shifts. |
| 568 | + * |
| 569 | + * @param <K> |
| 570 | + * the type of the key |
| 571 | + */ |
| 572 | + private static class SequenceKeySet<K> { |
| 573 | + |
| 574 | + private long sequenceNumber; |
| 575 | + private final Set<K> keys = new HashSet<>(); |
| 576 | + |
| 577 | + /** |
| 578 | + * Create an object capable of holding keys for a sequence number. |
| 579 | + * |
| 580 | + * @param sequenceNumber |
| 581 | + * the initial sequence number to be stored in this object |
| 582 | + */ |
| 583 | + private SequenceKeySet(final long sequenceNumber) { |
| 584 | + this.sequenceNumber = sequenceNumber; |
| 585 | + } |
| 586 | + |
| 587 | + /** |
| 588 | + * Get the sequence number currently stored in this object. |
| 589 | + * |
| 590 | + * @return the current sequence number |
| 591 | + */ |
| 592 | + private long getSequenceNumber() { |
| 593 | + return sequenceNumber; |
| 594 | + } |
| 595 | + |
| 596 | + /** |
| 597 | + * Set the sequence number currently stored in this object. |
| 598 | + * |
| 599 | + * @param sequenceNumber |
| 600 | + * the sequence number stored in this object |
| 601 | + */ |
| 602 | + private void setSequenceNumber(final long sequenceNumber) { |
| 603 | + this.sequenceNumber = sequenceNumber; |
| 604 | + } |
| 605 | + |
| 606 | + /** |
| 607 | + * Get the set of keys contained by this object. |
| 608 | + * |
| 609 | + * @return a set of keys |
| 610 | + */ |
| 611 | + private Set<K> getKeys() { |
| 612 | + return keys; |
| 613 | + } |
| 614 | + |
| 615 | + @Override |
| 616 | + public String toString() { |
| 617 | + return new ToStringBuilder(this) |
| 618 | + .append("sequence number", sequenceNumber) |
| 619 | + .append("size", keys.size()) |
| 620 | + .toString(); |
| 621 | + } |
| 622 | + } |
562 | 623 | }
|
0 commit comments