module Cardano.Api.Internal.IPC.Version
( isQuerySupportedInNtcVersion
, UnsupportedNtcVersionError (..)
)
where
import Cardano.Protocol.Crypto
import Ouroboros.Consensus.Cardano.Block qualified as Consensus
import Ouroboros.Consensus.Cardano.Node ()
import Ouroboros.Consensus.Ledger.Query qualified as Consensus
import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
import Ouroboros.Network.NodeToClient.Version (NodeToClientVersion (..))
import Ouroboros.Network.Protocol.LocalStateQuery.Codec
isQuerySupportedInNtcVersion
:: Some (Consensus.Query (Consensus.CardanoBlock StandardCrypto))
-> NodeToClientVersion
-> Either UnsupportedNtcVersionError ()
isQuerySupportedInNtcVersion :: Some (Query (CardanoBlock StandardCrypto))
-> NodeToClientVersion -> Either UnsupportedNtcVersionError ()
isQuerySupportedInNtcVersion (Some Query (CardanoBlock StandardCrypto) a
q) NodeToClientVersion
ntc =
if Query (CardanoBlock StandardCrypto) a
-> NodeToClientVersion -> Bool
forall blk result.
(SupportedNetworkProtocolVersion blk,
BlockSupportsLedgerQuery blk) =>
Query blk result -> NodeToClientVersion -> Bool
Consensus.queryIsSupportedOnNodeToClientVersion Query (CardanoBlock StandardCrypto) a
q NodeToClientVersion
ntc
then () -> Either UnsupportedNtcVersionError ()
forall a b. b -> Either a b
Right ()
else UnsupportedNtcVersionError -> Either UnsupportedNtcVersionError ()
forall a b. a -> Either a b
Left (UnsupportedNtcVersionError
-> Either UnsupportedNtcVersionError ())
-> UnsupportedNtcVersionError
-> Either UnsupportedNtcVersionError ()
forall a b. (a -> b) -> a -> b
$ NodeToClientVersion
-> [NodeToClientVersion] -> UnsupportedNtcVersionError
UnsupportedNtcVersionError NodeToClientVersion
ntc (Query (CardanoBlock StandardCrypto) a -> [NodeToClientVersion]
forall blk result.
(SupportedNetworkProtocolVersion blk,
BlockSupportsLedgerQuery blk) =>
Query blk result -> [NodeToClientVersion]
Consensus.querySupportedVersions Query (CardanoBlock StandardCrypto) a
q)
data UnsupportedNtcVersionError
= UnsupportedNtcVersionError
!NodeToClientVersion
![NodeToClientVersion]
deriving (UnsupportedNtcVersionError -> UnsupportedNtcVersionError -> Bool
(UnsupportedNtcVersionError -> UnsupportedNtcVersionError -> Bool)
-> (UnsupportedNtcVersionError
-> UnsupportedNtcVersionError -> Bool)
-> Eq UnsupportedNtcVersionError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnsupportedNtcVersionError -> UnsupportedNtcVersionError -> Bool
== :: UnsupportedNtcVersionError -> UnsupportedNtcVersionError -> Bool
$c/= :: UnsupportedNtcVersionError -> UnsupportedNtcVersionError -> Bool
/= :: UnsupportedNtcVersionError -> UnsupportedNtcVersionError -> Bool
Eq, Int -> UnsupportedNtcVersionError -> ShowS
[UnsupportedNtcVersionError] -> ShowS
UnsupportedNtcVersionError -> String
(Int -> UnsupportedNtcVersionError -> ShowS)
-> (UnsupportedNtcVersionError -> String)
-> ([UnsupportedNtcVersionError] -> ShowS)
-> Show UnsupportedNtcVersionError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnsupportedNtcVersionError -> ShowS
showsPrec :: Int -> UnsupportedNtcVersionError -> ShowS
$cshow :: UnsupportedNtcVersionError -> String
show :: UnsupportedNtcVersionError -> String
$cshowList :: [UnsupportedNtcVersionError] -> ShowS
showList :: [UnsupportedNtcVersionError] -> ShowS
Show)