From 18da7f79eabc36ceb0a7bdbb8d16787711823f1d Mon Sep 17 00:00:00 2001 From: Radu Ometita Date: Wed, 12 Jan 2022 14:17:39 +0200 Subject: [PATCH] Refactorings: * Moved ChainSyncHandle from Cardano.Node.Client to Cardano.Node.Types --- plutus-pab/src/Cardano/Node/Client.hs | 9 ++++++--- plutus-pab/src/Cardano/Node/Types.hs | 8 +++++++- plutus-pab/src/Cardano/Wallet/Mock/Handlers.hs | 5 +++-- plutus-pab/src/Cardano/Wallet/Mock/Server.hs | 4 ++-- plutus-pab/src/Plutus/PAB/App.hs | 7 +++---- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/plutus-pab/src/Cardano/Node/Client.hs b/plutus-pab/src/Cardano/Node/Client.hs index 3c9f1fab3e..7ed579df84 100644 --- a/plutus-pab/src/Cardano/Node/Client.hs +++ b/plutus-pab/src/Cardano/Node/Client.hs @@ -11,13 +11,12 @@ import Control.Monad.Freer import Control.Monad.Freer.Reader (Reader, ask) import Control.Monad.IO.Class import Data.Proxy (Proxy (Proxy)) -import Ledger (Block) import Ledger.TimeSlot (SlotConfig) import Servant (NoContent, (:<|>) (..)) import Servant.Client (ClientM, client) import Cardano.Node.API (API) -import Cardano.Node.Types (PABServerLogMsg) +import Cardano.Node.Types (ChainSyncHandle, PABServerConfig, PABServerLogMsg) import Cardano.Protocol.Socket.Client qualified as Client import Cardano.Protocol.Socket.Mock.Client qualified as MockClient import Control.Monad.Freer.Extras.Log (LogMessage) @@ -52,4 +51,8 @@ handleNodeClientClient slotCfg e = do either (liftIO . MockClient.getCurrentSlot) (liftIO . Client.getCurrentSlot) chainSyncHandle GetClientSlotConfig -> pure slotCfg -type ChainSyncHandle = Either (Client.ChainSyncHandle Block) (Client.ChainSyncHandle Client.ChainSyncEvent) +runChainSyncWithCfg :: + PABServerConfig + -> IO ChainSyncHandle +runChainSyncWithCfg = undefined + diff --git a/plutus-pab/src/Cardano/Node/Types.hs b/plutus-pab/src/Cardano/Node/Types.hs index e6ff0c37da..5eee2d7e6b 100644 --- a/plutus-pab/src/Cardano/Node/Types.hs +++ b/plutus-pab/src/Cardano/Node/Types.hs @@ -23,6 +23,7 @@ module Cardano.Node.Types -- * Effects , NodeServerEffects + , ChainSyncHandle -- * State types , AppState (..) @@ -45,6 +46,7 @@ module Cardano.Node.Types import Cardano.BM.Data.Tracer (ToObject (..)) import Cardano.BM.Data.Tracer.Extras (Tagged (..), mkObjectStr) import Cardano.Chain (MockNodeServerChainState, fromEmulatorChainState) +import Cardano.Protocol.Socket.Client qualified as Client import Cardano.Protocol.Socket.Mock.Client qualified as Client import Control.Lens (makeLenses, view) import Control.Monad.Freer.Extras.Log (LogMessage, LogMsg (..)) @@ -60,7 +62,7 @@ import Data.Time.Format.ISO8601 qualified as F import Data.Time.Units (Millisecond) import Data.Time.Units.Extra () import GHC.Generics (Generic) -import Ledger (Tx, txId) +import Ledger (Block, Tx, txId) import Ledger.CardanoWallet (WalletNumber (..)) import Ledger.TimeSlot (SlotConfig) import Plutus.Contract.Trace qualified as Trace @@ -157,6 +159,10 @@ defaultPABServerConfig = instance Default PABServerConfig where def = defaultPABServerConfig +-- | The types of handles varies based on the type of clients (mocked or +-- real nodes) and we need a generic way of handling either type of response. +type ChainSyncHandle = Either (Client.ChainSyncHandle Block) (Client.ChainSyncHandle Client.ChainSyncEvent) + -- Logging ------------------------------------------------------------------------------------------------------------ -- | Top-level logging data type for structural logging diff --git a/plutus-pab/src/Cardano/Wallet/Mock/Handlers.hs b/plutus-pab/src/Cardano/Wallet/Mock/Handlers.hs index 4c1d89e8f6..467b986aba 100644 --- a/plutus-pab/src/Cardano/Wallet/Mock/Handlers.hs +++ b/plutus-pab/src/Cardano/Wallet/Mock/Handlers.hs @@ -19,6 +19,7 @@ module Cardano.Wallet.Mock.Handlers import Cardano.BM.Data.Trace (Trace) import Cardano.Node.Client qualified as NodeClient +import Cardano.Node.Types (ChainSyncHandle) import Cardano.Protocol.Socket.Mock.Client qualified as MockClient import Cardano.Wallet.Mock.Types (MultiWalletEffect (..), WalletEffects, WalletInfo (..), WalletMsg (..), Wallets, fromWalletState) @@ -149,7 +150,7 @@ processWalletEffects :: (MonadIO m, MonadError ServerError m) => Trace IO WalletMsg -- ^ trace for logging -> MockClient.TxSendHandle -- ^ node client - -> NodeClient.ChainSyncHandle -- ^ node client + -> ChainSyncHandle -- ^ node client -> ClientEnv -- ^ chain index client -> MVar Wallets -- ^ wallets state -> FeeConfig @@ -178,7 +179,7 @@ processWalletEffects trace txSendHandle chainSyncHandle chainIndexEnv mVarState runWalletEffects :: Trace IO WalletMsg -- ^ trace for logging -> MockClient.TxSendHandle -- ^ node client - -> NodeClient.ChainSyncHandle -- ^ node client + -> ChainSyncHandle -- ^ node client -> ClientEnv -- ^ chain index client -> Wallets -- ^ current state -> FeeConfig diff --git a/plutus-pab/src/Cardano/Wallet/Mock/Server.hs b/plutus-pab/src/Cardano/Wallet/Mock/Server.hs index 2827f81c25..693dbffb87 100644 --- a/plutus-pab/src/Cardano/Wallet/Mock/Server.hs +++ b/plutus-pab/src/Cardano/Wallet/Mock/Server.hs @@ -14,7 +14,7 @@ module Cardano.Wallet.Mock.Server import Cardano.BM.Data.Trace (Trace) import Cardano.ChainIndex.Types (ChainIndexUrl (ChainIndexUrl)) -import Cardano.Node.Client qualified as NodeClient +import Cardano.Node.Types (ChainSyncHandle) import Cardano.Protocol.Socket.Mock.Client qualified as MockClient import Cardano.Wallet.Mock.API (API) import Cardano.Wallet.Mock.Handlers (processWalletEffects) @@ -47,7 +47,7 @@ import Wallet.Emulator.Wallet qualified as Wallet app :: Trace IO WalletMsg -> MockClient.TxSendHandle - -> NodeClient.ChainSyncHandle + -> ChainSyncHandle -> ClientEnv -> MVar Wallets -> FeeConfig diff --git a/plutus-pab/src/Plutus/PAB/App.hs b/plutus-pab/src/Plutus/PAB/App.hs index 44335db95b..bf87015a74 100644 --- a/plutus-pab/src/Plutus/PAB/App.hs +++ b/plutus-pab/src/Plutus/PAB/App.hs @@ -34,8 +34,7 @@ import Cardano.Api.Shelley (ProtocolParameters) import Cardano.BM.Trace (Trace, logDebug) import Cardano.ChainIndex.Types qualified as ChainIndex import Cardano.Node.Client (handleNodeClientClient) -import Cardano.Node.Client qualified as NodeClient -import Cardano.Node.Types (NodeMode (AlonzoNode, MockNode), +import Cardano.Node.Types (ChainSyncHandle, NodeMode (AlonzoNode, MockNode), PABServerConfig (PABServerConfig, pscBaseUrl, pscNetworkId, pscNodeMode, pscProtocolParametersJsonPath, pscSlotConfig, pscSocketPath)) import Cardano.Protocol.Socket.Mock.Client qualified as MockClient import Cardano.Wallet.LocalClient qualified as LocalWalletClient @@ -100,7 +99,7 @@ data AppEnv a = , nodeClientEnv :: ClientEnv , chainIndexEnv :: ClientEnv , txSendHandle :: MockClient.TxSendHandle - , chainSyncHandle :: NodeClient.ChainSyncHandle + , chainSyncHandle :: ChainSyncHandle , appConfig :: Config , appTrace :: Trace IO (PABLogMsg (Builtin a)) , appInMemContractStore :: InMemInstances (Builtin a) @@ -166,7 +165,7 @@ appEffectHandlers storageBackend config trace BuiltinHandler{contractHandler} = -- handle 'NodeClientEffect' flip handleError (throwError . NodeClientError) . interpret (Core.handleUserEnvReader @(Builtin a) @(AppEnv a)) - . reinterpret (Core.handleMappedReader @(AppEnv a) @NodeClient.ChainSyncHandle chainSyncHandle) + . reinterpret (Core.handleMappedReader @(AppEnv a) @ChainSyncHandle chainSyncHandle) . interpret (Core.handleUserEnvReader @(Builtin a) @(AppEnv a)) . reinterpret (Core.handleMappedReader @(AppEnv a) @MockClient.TxSendHandle txSendHandle) . interpret (Core.handleUserEnvReader @(Builtin a) @(AppEnv a))