Skip to content

Commit

Permalink
Refactorings:
Browse files Browse the repository at this point in the history
* Moved ChainSyncHandle from Cardano.Node.Client to Cardano.Node.Types
  • Loading branch information
raduom committed Jan 17, 2022
1 parent 829a409 commit 18da7f7
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 12 deletions.
9 changes: 6 additions & 3 deletions plutus-pab/src/Cardano/Node/Client.hs
Expand Up @@ -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)
Expand Down Expand Up @@ -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

8 changes: 7 additions & 1 deletion plutus-pab/src/Cardano/Node/Types.hs
Expand Up @@ -23,6 +23,7 @@ module Cardano.Node.Types

-- * Effects
, NodeServerEffects
, ChainSyncHandle

-- * State types
, AppState (..)
Expand All @@ -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 (..))
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions plutus-pab/src/Cardano/Wallet/Mock/Handlers.hs
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions plutus-pab/src/Cardano/Wallet/Mock/Server.hs
Expand Up @@ -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)
Expand Down Expand Up @@ -47,7 +47,7 @@ import Wallet.Emulator.Wallet qualified as Wallet

app :: Trace IO WalletMsg
-> MockClient.TxSendHandle
-> NodeClient.ChainSyncHandle
-> ChainSyncHandle
-> ClientEnv
-> MVar Wallets
-> FeeConfig
Expand Down
7 changes: 3 additions & 4 deletions plutus-pab/src/Plutus/PAB/App.hs
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit 18da7f7

Please sign in to comment.