Skip to content

Commit f88acce

Browse files
committed
simulation: fix config conversion wrt leiosVoteSendRecvStages
1 parent 9645989 commit f88acce

File tree

1 file changed

+42
-34
lines changed

1 file changed

+42
-34
lines changed

simulation/src/LeiosProtocol/Short.hs

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -108,46 +108,54 @@ data LeiosConfig = forall p. IsPipeline p => LeiosConfig
108108
, voteDiffusion :: RelayDiffusionConfig
109109
}
110110

111+
data SomeStage = forall p. IsPipeline p => SomeStage (SingPipeline p) (Stage p)
112+
111113
convertConfig :: OnDisk.Config -> LeiosConfig
112114
convertConfig disk =
113-
LeiosConfig
114-
{ praos
115-
, pipeline = SingSingleVote
116-
, sliceLength = fromIntegral disk.leiosStageLengthSlots
117-
, inputBlockFrequencyPerSlot = disk.ibGenerationProbability
118-
, endorseBlockFrequencyPerStage = disk.ebGenerationProbability
119-
, activeVotingStageLength = fromIntegral disk.leiosStageActiveVotingSlots
120-
, votingFrequencyPerStage = disk.voteGenerationProbability
121-
, votesForCertificate = fromIntegral disk.voteThreshold
122-
, voteSendStage = Vote
123-
, sizes
124-
, delays
125-
, ibDiffusion =
126-
RelayDiffusionConfig
127-
{ strategy = disk.ibDiffusionStrategy
128-
, maxWindowSize = disk.ibDiffusionMaxWindowSize
129-
, maxHeadersToRequest = disk.ibDiffusionMaxHeadersToRequest
130-
, maxBodiesToRequest = disk.ibDiffusionMaxBodiesToRequest
131-
}
132-
, ebDiffusion =
133-
RelayDiffusionConfig
134-
{ strategy = disk.ebDiffusionStrategy
135-
, maxWindowSize = disk.ebDiffusionMaxWindowSize
136-
, maxHeadersToRequest = disk.ebDiffusionMaxHeadersToRequest
137-
, maxBodiesToRequest = disk.ebDiffusionMaxBodiesToRequest
138-
}
139-
, voteDiffusion =
140-
RelayDiffusionConfig
141-
{ strategy = disk.voteDiffusionStrategy
142-
, maxWindowSize = disk.voteDiffusionMaxWindowSize
143-
, maxHeadersToRequest = disk.voteDiffusionMaxHeadersToRequest
144-
, maxBodiesToRequest = disk.voteDiffusionMaxBodiesToRequest
145-
}
146-
}
115+
case voting of
116+
SomeStage pipeline voteSendStage ->
117+
LeiosConfig
118+
{ praos
119+
, pipeline
120+
, voteSendStage
121+
, sliceLength = fromIntegral disk.leiosStageLengthSlots
122+
, inputBlockFrequencyPerSlot = disk.ibGenerationProbability
123+
, endorseBlockFrequencyPerStage = disk.ebGenerationProbability
124+
, activeVotingStageLength = fromIntegral disk.leiosStageActiveVotingSlots
125+
, votingFrequencyPerStage = disk.voteGenerationProbability
126+
, votesForCertificate = fromIntegral disk.voteThreshold
127+
, sizes
128+
, delays
129+
, ibDiffusion =
130+
RelayDiffusionConfig
131+
{ strategy = disk.ibDiffusionStrategy
132+
, maxWindowSize = disk.ibDiffusionMaxWindowSize
133+
, maxHeadersToRequest = disk.ibDiffusionMaxHeadersToRequest
134+
, maxBodiesToRequest = disk.ibDiffusionMaxBodiesToRequest
135+
}
136+
, ebDiffusion =
137+
RelayDiffusionConfig
138+
{ strategy = disk.ebDiffusionStrategy
139+
, maxWindowSize = disk.ebDiffusionMaxWindowSize
140+
, maxHeadersToRequest = disk.ebDiffusionMaxHeadersToRequest
141+
, maxBodiesToRequest = disk.ebDiffusionMaxBodiesToRequest
142+
}
143+
, voteDiffusion =
144+
RelayDiffusionConfig
145+
{ strategy = disk.voteDiffusionStrategy
146+
, maxWindowSize = disk.voteDiffusionMaxWindowSize
147+
, maxHeadersToRequest = disk.voteDiffusionMaxHeadersToRequest
148+
, maxBodiesToRequest = disk.voteDiffusionMaxBodiesToRequest
149+
}
150+
}
147151
where
148152
forEach n xs = n * fromIntegral (length xs)
149153
forEachKey n m = n * fromIntegral (Map.size m)
150154
durationMsToDiffTime (DurationMs d) = secondsToDiffTime $ d / 1000
155+
voting =
156+
if disk.leiosVoteSendRecvStages
157+
then SomeStage SingSplitVote VoteSend
158+
else SomeStage SingSingleVote Vote
151159
praos =
152160
PraosConfig
153161
{ blockFrequencyPerSlot = disk.rbGenerationProbability

0 commit comments

Comments
 (0)