{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Cardano.Api.Protocol
(
Protocol(..)
, localNodeConnectInfo
, withlocalNodeConnectInfo
, LocalNodeConnectInfoForSomeMode(..)
) where
import Cardano.Prelude
import Cardano.Chain.Slotting (EpochSlots (..))
import Cardano.Api.Typed
import Ouroboros.Consensus.Node.Run (RunNode)
data Protocol = ByronProtocol !EpochSlots
| ShelleyProtocol
| CardanoProtocol !EpochSlots
deriving (Protocol -> Protocol -> Bool
(Protocol -> Protocol -> Bool)
-> (Protocol -> Protocol -> Bool) -> Eq Protocol
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Protocol -> Protocol -> Bool
$c/= :: Protocol -> Protocol -> Bool
== :: Protocol -> Protocol -> Bool
$c== :: Protocol -> Protocol -> Bool
Eq, Int -> Protocol -> ShowS
[Protocol] -> ShowS
Protocol -> String
(Int -> Protocol -> ShowS)
-> (Protocol -> String) -> ([Protocol] -> ShowS) -> Show Protocol
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Protocol] -> ShowS
$cshowList :: [Protocol] -> ShowS
show :: Protocol -> String
$cshow :: Protocol -> String
showsPrec :: Int -> Protocol -> ShowS
$cshowsPrec :: Int -> Protocol -> ShowS
Show)
data LocalNodeConnectInfoForSomeMode where
LocalNodeConnectInfoForSomeMode
:: RunNode block
=> LocalNodeConnectInfo mode block
-> LocalNodeConnectInfoForSomeMode
withlocalNodeConnectInfo :: Protocol
-> NetworkId
-> FilePath
-> (forall mode block.
RunNode block
=> LocalNodeConnectInfo mode block
-> a)
-> a
withlocalNodeConnectInfo :: Protocol
-> NetworkId
-> String
-> (forall mode block.
RunNode block =>
LocalNodeConnectInfo mode block -> a)
-> a
withlocalNodeConnectInfo Protocol
protocol NetworkId
network String
socketPath forall mode block.
RunNode block =>
LocalNodeConnectInfo mode block -> a
f =
case Protocol -> NetworkId -> String -> LocalNodeConnectInfoForSomeMode
localNodeConnectInfo Protocol
protocol NetworkId
network String
socketPath of
LocalNodeConnectInfoForSomeMode LocalNodeConnectInfo mode block
connctInfo -> LocalNodeConnectInfo mode block -> a
forall mode block.
RunNode block =>
LocalNodeConnectInfo mode block -> a
f LocalNodeConnectInfo mode block
connctInfo
localNodeConnectInfo :: Protocol
-> NetworkId
-> FilePath
-> LocalNodeConnectInfoForSomeMode
localNodeConnectInfo :: Protocol -> NetworkId -> String -> LocalNodeConnectInfoForSomeMode
localNodeConnectInfo Protocol
protocol NetworkId
network String
socketPath =
case Protocol
protocol of
ByronProtocol EpochSlots
epSlots ->
LocalNodeConnectInfo ByronMode ByronBlockHFC
-> LocalNodeConnectInfoForSomeMode
forall block mode.
RunNode block =>
LocalNodeConnectInfo mode block -> LocalNodeConnectInfoForSomeMode
LocalNodeConnectInfoForSomeMode (LocalNodeConnectInfo ByronMode ByronBlockHFC
-> LocalNodeConnectInfoForSomeMode)
-> LocalNodeConnectInfo ByronMode ByronBlockHFC
-> LocalNodeConnectInfoForSomeMode
forall a b. (a -> b) -> a -> b
$
String
-> NetworkId
-> NodeConsensusMode ByronMode ByronBlockHFC
-> LocalNodeConnectInfo ByronMode ByronBlockHFC
forall mode block.
String
-> NetworkId
-> NodeConsensusMode mode block
-> LocalNodeConnectInfo mode block
LocalNodeConnectInfo
String
socketPath NetworkId
network
(EpochSlots -> NodeConsensusMode ByronMode ByronBlockHFC
ByronMode EpochSlots
epSlots)
Protocol
ShelleyProtocol ->
LocalNodeConnectInfo ShelleyMode (ShelleyBlockHFC StandardShelley)
-> LocalNodeConnectInfoForSomeMode
forall block mode.
RunNode block =>
LocalNodeConnectInfo mode block -> LocalNodeConnectInfoForSomeMode
LocalNodeConnectInfoForSomeMode (LocalNodeConnectInfo ShelleyMode (ShelleyBlockHFC StandardShelley)
-> LocalNodeConnectInfoForSomeMode)
-> LocalNodeConnectInfo
ShelleyMode (ShelleyBlockHFC StandardShelley)
-> LocalNodeConnectInfoForSomeMode
forall a b. (a -> b) -> a -> b
$
String
-> NetworkId
-> NodeConsensusMode ShelleyMode (ShelleyBlockHFC StandardShelley)
-> LocalNodeConnectInfo
ShelleyMode (ShelleyBlockHFC StandardShelley)
forall mode block.
String
-> NetworkId
-> NodeConsensusMode mode block
-> LocalNodeConnectInfo mode block
LocalNodeConnectInfo
String
socketPath NetworkId
network
NodeConsensusMode ShelleyMode (ShelleyBlockHFC StandardShelley)
ShelleyMode
CardanoProtocol EpochSlots
epSlots ->
LocalNodeConnectInfo CardanoMode (CardanoBlock StandardCrypto)
-> LocalNodeConnectInfoForSomeMode
forall block mode.
RunNode block =>
LocalNodeConnectInfo mode block -> LocalNodeConnectInfoForSomeMode
LocalNodeConnectInfoForSomeMode (LocalNodeConnectInfo CardanoMode (CardanoBlock StandardCrypto)
-> LocalNodeConnectInfoForSomeMode)
-> LocalNodeConnectInfo CardanoMode (CardanoBlock StandardCrypto)
-> LocalNodeConnectInfoForSomeMode
forall a b. (a -> b) -> a -> b
$
String
-> NetworkId
-> NodeConsensusMode CardanoMode (CardanoBlock StandardCrypto)
-> LocalNodeConnectInfo CardanoMode (CardanoBlock StandardCrypto)
forall mode block.
String
-> NetworkId
-> NodeConsensusMode mode block
-> LocalNodeConnectInfo mode block
LocalNodeConnectInfo
String
socketPath NetworkId
network
(EpochSlots
-> NodeConsensusMode CardanoMode (CardanoBlock StandardCrypto)
CardanoMode EpochSlots
epSlots)