Skip to content

Commit a1d5aef

Browse files
authored
chore: Move SequenceMap and SequenceSet to consensus-model (#18767)
Signed-off-by: Michael Heinrichs <[email protected]>
1 parent 1cee660 commit a1d5aef

File tree

26 files changed

+115
-115
lines changed

26 files changed

+115
-115
lines changed

platform-sdk/consensus-model/build.gradle.kts

+10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
plugins {
33
id("org.hiero.gradle.module.library")
44
id("org.hiero.gradle.feature.publish-artifactregistry")
5+
id("org.hiero.gradle.feature.test-timing-sensitive")
56
}
67

78
description = "Consensus Model"
9+
10+
timingSensitiveModuleInfo {
11+
requires("com.swirlds.common")
12+
requires("com.swirlds.common.test.fixtures")
13+
requires("org.hiero.base.concurrent")
14+
requires("org.hiero.base.utility.test.fixtures")
15+
requires("org.junit.jupiter.api")
16+
requires("org.junit.jupiter.params")
17+
}

platform-sdk/consensus-model/src/main/java/module-info.java

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
exports org.hiero.consensus.model.io.streams;
1010
exports org.hiero.consensus.model.node;
1111
exports org.hiero.consensus.model.notification;
12+
exports org.hiero.consensus.model.sequence;
13+
exports org.hiero.consensus.model.sequence.map;
14+
exports org.hiero.consensus.model.sequence.set;
1215
exports org.hiero.consensus.model.state;
1316
exports org.hiero.consensus.model.status;
1417
exports org.hiero.consensus.model.stream;
@@ -18,6 +21,7 @@
1821
requires transitive com.hedera.node.hapi;
1922
requires transitive com.hedera.pbj.runtime;
2023
requires transitive org.hiero.base.concurrent;
24+
requires transitive org.hiero.base.utility;
2125
requires com.swirlds.base;
2226
requires static transitive com.github.spotbugs.annotations;
2327
}

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/sequence/Shiftable.java renamed to platform-sdk/consensus-model/src/main/java/org/hiero/consensus/model/sequence/Shiftable.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence;
2+
package org.hiero.consensus.model.sequence;
33

44
/**
55
* A data structure with a shifting window of acceptable values. When a new value is added, if the value
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.map.internal;
2+
package org.hiero.consensus.model.sequence.map;
33

4-
import com.swirlds.platform.sequence.map.SequenceMap;
4+
import com.swirlds.base.utility.ToStringBuilder;
55
import edu.umd.cs.findbugs.annotations.NonNull;
66
import java.util.AbstractMap;
7+
import java.util.HashSet;
78
import java.util.LinkedList;
89
import java.util.List;
910
import java.util.Map;
1011
import java.util.Objects;
12+
import java.util.Set;
1113
import java.util.function.BiConsumer;
1214
import java.util.function.Function;
1315
import java.util.function.ToLongFunction;
@@ -559,4 +561,63 @@ public void clear() {
559561
fullUnlock();
560562
}
561563
}
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+
}
562623
}
+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.map;
2+
package org.hiero.consensus.model.sequence.map;
33

4-
import com.swirlds.platform.sequence.map.internal.AbstractSequenceMap;
54
import edu.umd.cs.findbugs.annotations.NonNull;
65
import java.util.Map;
76
import java.util.concurrent.ConcurrentHashMap;
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.map;
2+
package org.hiero.consensus.model.sequence.map;
33

4-
import com.swirlds.platform.sequence.Shiftable;
54
import java.util.List;
65
import java.util.Map;
76
import java.util.function.BiConsumer;
87
import java.util.function.Function;
98
import org.hiero.base.utility.Clearable;
9+
import org.hiero.consensus.model.sequence.Shiftable;
1010

1111
/**
1212
* <p>
+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.map;
2+
package org.hiero.consensus.model.sequence.map;
33

4-
import com.swirlds.platform.sequence.map.internal.AbstractSequenceMap;
54
import java.util.HashMap;
65
import java.util.Map;
76
import java.util.function.ToLongFunction;
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.set.internal;
2+
package org.hiero.consensus.model.sequence.set;
33

4-
import com.swirlds.platform.sequence.map.SequenceMap;
5-
import com.swirlds.platform.sequence.set.SequenceSet;
64
import edu.umd.cs.findbugs.annotations.NonNull;
75
import java.util.List;
86
import java.util.Objects;
97
import java.util.function.Consumer;
108
import java.util.function.ToLongFunction;
9+
import org.hiero.consensus.model.sequence.map.SequenceMap;
1110

1211
/**
1312
* Boilerplate implementation for {@link SequenceSet}.
+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.set;
2+
package org.hiero.consensus.model.sequence.set;
33

4-
import com.swirlds.platform.sequence.map.ConcurrentSequenceMap;
5-
import com.swirlds.platform.sequence.map.SequenceMap;
6-
import com.swirlds.platform.sequence.set.internal.AbstractSequenceSet;
74
import edu.umd.cs.findbugs.annotations.NonNull;
85
import java.util.Objects;
96
import java.util.function.ToLongFunction;
7+
import org.hiero.consensus.model.sequence.map.ConcurrentSequenceMap;
8+
import org.hiero.consensus.model.sequence.map.SequenceMap;
109

1110
/**
1211
* A thread safe {@link SequenceSet}.
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.set;
2+
package org.hiero.consensus.model.sequence.set;
33

4-
import com.swirlds.platform.sequence.Shiftable;
54
import java.util.List;
65
import java.util.function.Consumer;
76
import org.hiero.base.utility.Clearable;
7+
import org.hiero.consensus.model.sequence.Shiftable;
88

99
/**
1010
* <p>
+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.set;
2+
package org.hiero.consensus.model.sequence.set;
33

4-
import com.swirlds.platform.sequence.map.SequenceMap;
5-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
6-
import com.swirlds.platform.sequence.set.internal.AbstractSequenceSet;
74
import edu.umd.cs.findbugs.annotations.NonNull;
85
import java.util.Objects;
96
import java.util.function.ToLongFunction;
7+
import org.hiero.consensus.model.sequence.map.SequenceMap;
8+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
109

1110
/**
1211
* A lock free {@link SequenceSet}.
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.map;
2+
package org.hiero.consensus.model.sequence.map;
33

44
import static com.swirlds.common.test.fixtures.AssertionUtils.completeBeforeTimeout;
55
import static com.swirlds.common.threading.manager.AdHocThreadManager.getStaticThreadManager;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.platform.sequence.set;
2+
package org.hiero.consensus.model.sequence.set;
33

44
import static com.swirlds.common.test.fixtures.AssertionUtils.completeBeforeTimeout;
55
import static com.swirlds.common.threading.manager.AdHocThreadManager.getStaticThreadManager;

platform-sdk/swirlds-platform-core/build.gradle.kts

-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ timingSensitiveModuleInfo {
5252
requires("com.swirlds.platform.core")
5353
requires("com.swirlds.platform.core.test.fixtures")
5454
requires("org.hiero.base.concurrent")
55-
requires("org.hiero.base.utility.test.fixtures")
5655
requires("org.assertj.core")
5756
requires("org.junit.jupiter.api")
58-
requires("org.junit.jupiter.params")
5957
}

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/DefaultFutureEventBuffer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
import com.swirlds.common.context.PlatformContext;
77
import com.swirlds.common.metrics.FunctionGauge;
8-
import com.swirlds.platform.sequence.map.SequenceMap;
9-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
108
import com.swirlds.platform.wiring.NoInput;
119
import edu.umd.cs.findbugs.annotations.NonNull;
1210
import edu.umd.cs.findbugs.annotations.Nullable;
@@ -19,6 +17,8 @@
1917
import org.hiero.consensus.model.event.AncientMode;
2018
import org.hiero.consensus.model.event.PlatformEvent;
2119
import org.hiero.consensus.model.hashgraph.EventWindow;
20+
import org.hiero.consensus.model.sequence.map.SequenceMap;
21+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
2222

2323
/**
2424
* Default implementation of the {@link FutureEventBuffer}

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/creation/tipset/TipsetTracker.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import com.hedera.hapi.node.state.roster.Roster;
88
import com.swirlds.base.time.Time;
99
import com.swirlds.common.utility.throttle.RateLimitedLogger;
10-
import com.swirlds.platform.sequence.map.SequenceMap;
11-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
1210
import edu.umd.cs.findbugs.annotations.NonNull;
1311
import edu.umd.cs.findbugs.annotations.Nullable;
1412
import java.time.Duration;
@@ -21,6 +19,8 @@
2119
import org.hiero.consensus.model.event.EventDescriptorWrapper;
2220
import org.hiero.consensus.model.hashgraph.EventWindow;
2321
import org.hiero.consensus.model.node.NodeId;
22+
import org.hiero.consensus.model.sequence.map.SequenceMap;
23+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
2424

2525
/**
2626
* Computes and tracks tipsets for non-ancient events.

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/deduplication/StandardEventDeduplicator.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import com.swirlds.metrics.api.LongAccumulator;
1212
import com.swirlds.metrics.api.Metrics;
1313
import com.swirlds.platform.gossip.IntakeEventCounter;
14-
import com.swirlds.platform.sequence.map.SequenceMap;
15-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
1614
import com.swirlds.platform.wiring.NoInput;
1715
import edu.umd.cs.findbugs.annotations.NonNull;
1816
import edu.umd.cs.findbugs.annotations.Nullable;
@@ -25,6 +23,8 @@
2523
import org.hiero.consensus.model.event.EventDescriptorWrapper;
2624
import org.hiero.consensus.model.event.PlatformEvent;
2725
import org.hiero.consensus.model.hashgraph.EventWindow;
26+
import org.hiero.consensus.model.sequence.map.SequenceMap;
27+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
2828

2929
/**
3030
* A standard implementation of an {@link EventDeduplicator}.

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/linking/AbstractInOrderLinker.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import com.swirlds.common.utility.throttle.RateLimitedLogger;
88
import com.swirlds.platform.event.EventCounter;
99
import com.swirlds.platform.internal.EventImpl;
10-
import com.swirlds.platform.sequence.map.SequenceMap;
11-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
1210
import edu.umd.cs.findbugs.annotations.NonNull;
1311
import edu.umd.cs.findbugs.annotations.Nullable;
1412
import java.time.Duration;
@@ -25,6 +23,8 @@
2523
import org.hiero.consensus.model.event.EventDescriptorWrapper;
2624
import org.hiero.consensus.model.event.PlatformEvent;
2725
import org.hiero.consensus.model.hashgraph.EventWindow;
26+
import org.hiero.consensus.model.sequence.map.SequenceMap;
27+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
2828

2929
/**
3030
* Links events to their parents. Expects events to be provided in topological order.

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/orphan/DefaultOrphanBuffer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import com.swirlds.common.context.PlatformContext;
77
import com.swirlds.common.metrics.FunctionGauge;
88
import com.swirlds.platform.gossip.IntakeEventCounter;
9-
import com.swirlds.platform.sequence.map.SequenceMap;
10-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
119
import edu.umd.cs.findbugs.annotations.NonNull;
1210
import java.util.ArrayList;
1311
import java.util.Deque;
@@ -21,6 +19,8 @@
2119
import org.hiero.consensus.model.event.EventDescriptorWrapper;
2220
import org.hiero.consensus.model.event.PlatformEvent;
2321
import org.hiero.consensus.model.hashgraph.EventWindow;
22+
import org.hiero.consensus.model.sequence.map.SequenceMap;
23+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
2424

2525
/**
2626
* Takes as input an unordered stream of {@link PlatformEvent}s and emits a stream of {@link PlatformEvent}s in

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/event/stale/DefaultStaleEventDetector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import com.swirlds.common.context.PlatformContext;
55
import com.swirlds.component.framework.transformers.RoutableData;
6-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
76
import edu.umd.cs.findbugs.annotations.NonNull;
87
import java.util.ArrayList;
98
import java.util.List;
@@ -16,6 +15,7 @@
1615
import org.hiero.consensus.model.hashgraph.ConsensusRound;
1716
import org.hiero.consensus.model.hashgraph.EventWindow;
1817
import org.hiero.consensus.model.node.NodeId;
18+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
1919

2020
/**
2121
* Detects when a self event becomes stale. Note that this detection may not observe a self event go stale if the node

platform-sdk/swirlds-platform-core/src/main/java/com/swirlds/platform/gui/SimpleLinker.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import com.swirlds.platform.event.EventCounter;
55
import com.swirlds.platform.event.linking.InOrderLinker;
66
import com.swirlds.platform.internal.EventImpl;
7-
import com.swirlds.platform.sequence.map.SequenceMap;
8-
import com.swirlds.platform.sequence.map.StandardSequenceMap;
97
import edu.umd.cs.findbugs.annotations.NonNull;
108
import edu.umd.cs.findbugs.annotations.Nullable;
119
import java.time.Instant;
@@ -17,6 +15,8 @@
1715
import org.hiero.consensus.model.event.AncientMode;
1816
import org.hiero.consensus.model.event.EventDescriptorWrapper;
1917
import org.hiero.consensus.model.event.PlatformEvent;
18+
import org.hiero.consensus.model.sequence.map.SequenceMap;
19+
import org.hiero.consensus.model.sequence.map.StandardSequenceMap;
2020

2121
/**
2222
* Similar to the {@link InOrderLinker} but simplified and streamlined. Also does unlinking and supports queries against

0 commit comments

Comments
 (0)