Skip to content

Commit 43fe509

Browse files
committed
tx-generator: fewer IO types
1 parent 2448873 commit 43fe509

File tree

4 files changed

+22
-18
lines changed

4 files changed

+22
-18
lines changed

bench/tx-generator/src/Cardano/Benchmarking/FundSet.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ liftAnyEra f x = case x of
142142
InAnyCardanoEra BabbageEra a -> InAnyCardanoEra BabbageEra $ f a
143143

144144
type FundSelector = FundSet -> Either String [Fund]
145-
type FundSource = IO (Either String [Fund])
146-
type FundToStore = [Fund] -> IO ()
145+
type FundSource m = m (Either String [Fund])
146+
type FundToStore m = [Fund] -> m ()
147147

148148
-- Select Funds to cover a minimum value.
149149
-- TODO:

bench/tx-generator/src/Cardano/Benchmarking/ListBufferedSelector.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ mkBufferedSource ::
1818
-> Lovelace
1919
-> Maybe Variant
2020
-> Int
21-
-> IO (Either String FundSource)
21+
-> IO (Either String (FundSource IO))
2222
mkBufferedSource walletRef count minValue variant munch
2323
= mkWalletFundSource walletRef (selectToBuffer count minValue variant) >>= \case
2424
Left err -> return $ Left err

bench/tx-generator/src/Cardano/Benchmarking/Script/Core.hs

+10-7
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,21 @@ readSigningKey name filePath =
8989
Left err -> liftTxGenError err
9090
Right key -> setName name key
9191

92-
defineSigningKey :: KeyName -> TextEnvelope -> ActionM ()
93-
defineSigningKey name descr
94-
= case deserialiseFromTextEnvelopeAnyOf types descr of
95-
Right key -> setName name key
96-
Left err -> throwE $ ApiError $ show err
92+
parseSigningKey :: TextEnvelope -> Either TextEnvelopeError (SigningKey PaymentKey)
93+
parseSigningKey = deserialiseFromTextEnvelopeAnyOf types
9794
where
9895
types :: [FromSomeType HasTextEnvelope (SigningKey PaymentKey)]
9996
types =
10097
[ FromSomeType (AsSigningKey AsGenesisUTxOKey) castSigningKey
10198
, FromSomeType (AsSigningKey AsPaymentKey) id
10299
]
103100

101+
defineSigningKey :: KeyName -> TextEnvelope -> ActionM ()
102+
defineSigningKey name descr
103+
= case parseSigningKey descr of
104+
Right key -> setName name key
105+
Left err -> throwE $ ApiError $ show err
106+
104107
addFund :: AnyCardanoEra -> WalletName -> TxIn -> Lovelace -> KeyName -> ActionM ()
105108
addFund era wallet txIn lovelace keyName = do
106109
fundKey <- getName keyName
@@ -382,7 +385,7 @@ createChangeInEra sourceWallet dstWallet submitMode payMode value count _era = d
382385
protocolParameters <- getProtocolParameters
383386
(toUTxO, addressMsg) <- interpretPayMode payMode
384387
let
385-
createCoins :: FundSet.FundSource -> [Lovelace] -> ActionM (Either String (TxInMode CardanoMode))
388+
createCoins :: FundSet.FundSource IO -> [Lovelace] -> ActionM (Either String (TxInMode CardanoMode))
386389
createCoins fundSource coins = do
387390
(tx :: Either String (Tx era)) <- liftIO $ sourceToStoreTransaction
388391
(genTx protocolParameters (TxInsCollateralNone, [])
@@ -411,7 +414,7 @@ interpretPayMode payMode = do
411414
createChangeGeneric ::
412415
WalletName
413416
-> SubmitMode
414-
-> (FundSet.FundSource -> [Lovelace] -> ActionM (Either String (TxInMode CardanoMode)))
417+
-> (FundSet.FundSource IO -> [Lovelace] -> ActionM (Either String (TxInMode CardanoMode)))
415418
-> String
416419
-> Lovelace
417420
-> Int

bench/tx-generator/src/Cardano/Benchmarking/Wallet.hs

+9-8
Original file line numberDiff line numberDiff line change
@@ -66,22 +66,23 @@ walletExtractFunds w s
6666
Left err -> Left err
6767
Right funds -> Right (foldl (flip walletDeleteFund) w funds, funds)
6868

69-
mkWalletFundSource :: WalletRef -> FundSelector -> FundSource
69+
mkWalletFundSource :: WalletRef -> FundSelector -> FundSource IO
7070
mkWalletFundSource walletRef selector
7171
= modifyWalletRefEither walletRef (\wallet -> return $ walletExtractFunds wallet selector)
7272

73-
mkWalletFundStore :: WalletRef -> FundToStore
73+
mkWalletFundStore :: WalletRef -> FundToStore IO
7474
mkWalletFundStore walletRef funds = modifyWalletRef walletRef
7575
$ \wallet -> return (foldl (flip walletInsertFund) wallet funds, ())
7676

7777
--TODO use Error monad
7878
sourceToStoreTransaction ::
79-
TxGenerator era
80-
-> FundSource
79+
Monad m
80+
=> TxGenerator era
81+
-> FundSource m
8182
-> ([Lovelace] -> [Lovelace])
8283
-> [ToUTxO era]
83-
-> FundToStore
84-
-> IO (Either String (Tx era))
84+
-> FundToStore m
85+
-> m (Either String (Tx era))
8586
sourceToStoreTransaction txGenerator fundSource inToOut mkTxOut fundToStore = do
8687
fundSource >>= \case
8788
Left err -> return $ Left err
@@ -223,10 +224,10 @@ benchmarkWalletScript :: forall era .
223224
=> WalletRef
224225
-> TxGenerator era
225226
-> NumberOfTxs
226-
-> (Target -> FundSource)
227+
-> (Target -> FundSource IO)
227228
-> ([Lovelace] -> [Lovelace])
228229
-> ( Target -> SeqNumber -> [ToUTxO era])
229-
-> FundToStore
230+
-> FundToStore IO
230231
-> Target
231232
-> WalletScript era
232233
benchmarkWalletScript wRef txGenerator (NumberOfTxs maxCount) fundSource inOut toUTxO fundToStore targetNode

0 commit comments

Comments
 (0)