Class InMemoryConsensusNetwork
java.lang.Object
org.j7m.middleware.consensus.InMemoryConsensusNetwork
Deterministic in-process network for consensus simulation.
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a network.InMemoryConsensusNetwork(int pendingMessageLimit) Creates a network with an explicit hard cap for pending messages. -
Method Summary
Modifier and TypeMethodDescriptionvoiddropNext()Drops the next sent message.longdropped()Returns dropped count.longReturns duplicated count.voidDuplicates the next sent message.booleanReturns true when messages are pending.voidheal()Clears all partitions.voidpartition(Set<org.j7m.middleware.api.consensus.ConsensusNodeId> majority, Set<org.j7m.middleware.api.consensus.ConsensusNodeId> minority) Partitions nodes into majority and minority components.Set<org.j7m.middleware.api.consensus.ConsensusNodeId> Returns nodes currently in isolated partitions.poll()Polls next message.voidDrops messages currently queued across partitions.longReturns reordered count.voidReorders the pending queue by moving the last message to the front.voidsend(ConsensusMessage message) Sends a message subject to deterministic drop/duplicate/partition rules.voidsendAll(List<ConsensusMessage> outgoing) Sends all messages.longsent()Returns sent count.
-
Constructor Details
-
InMemoryConsensusNetwork
public InMemoryConsensusNetwork()Creates a network. -
InMemoryConsensusNetwork
public InMemoryConsensusNetwork(int pendingMessageLimit) Creates a network with an explicit hard cap for pending messages.- Parameters:
pendingMessageLimit- maximum number of queued messages
-
-
Method Details
-
send
Sends a message subject to deterministic drop/duplicate/partition rules.- Parameters:
message- message
-
sendAll
Sends all messages.- Parameters:
outgoing- outgoing messages
-
poll
-
hasMessages
public boolean hasMessages()Returns true when messages are pending.- Returns:
- true when pending
-
dropNext
public void dropNext()Drops the next sent message. -
duplicateNext
public void duplicateNext()Duplicates the next sent message. -
reorderPending
public void reorderPending()Reorders the pending queue by moving the last message to the front. -
partition
-
heal
public void heal()Clears all partitions. -
purgeDisconnectedMessages
public void purgeDisconnectedMessages()Drops messages currently queued across partitions. -
sent
public long sent()Returns sent count.- Returns:
- count
-
dropped
public long dropped()Returns dropped count.- Returns:
- count
-
duplicated
public long duplicated()Returns duplicated count.- Returns:
- count
-
reordered
public long reordered()Returns reordered count.- Returns:
- count
-
partitionedNodes
Returns nodes currently in isolated partitions.- Returns:
- partitioned node ids
-