@@ -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+
111113convertConfig :: OnDisk. Config -> LeiosConfig
112114convertConfig 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