ouroboros-network-framework-0.1.0.0
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Network.Protocol.Handshake.Version

Synopsis

Documentation

newtype Versions vNum vData r Source #

The set of versions supported by the local agent are described by a map keyed on the version identifier.

If one needs to combine multiple versions the simplest way is to use one of the combinators: foldMapVersions, combineVersions or the Semigroup instance directly:

fold $ (simpleSingletonVersions ...)
      :| [ (simpleSingletonVersions ...)
         , (simpleSingletonVersions ...)
         , ...
         ]

Constructors

Versions 

Fields

Instances

Instances details
Functor (Versions vNum extra) Source # 
Instance details

Defined in Ouroboros.Network.Protocol.Handshake.Version

Methods

fmap :: (a -> b) -> Versions vNum extra a -> Versions vNum extra b #

(<$) :: a -> Versions vNum extra b -> Versions vNum extra a #

Ord vNum => Semigroup (Versions vNum vData r) Source # 
Instance details

Defined in Ouroboros.Network.Protocol.Handshake.Version

Methods

(<>) :: Versions vNum vData r -> Versions vNum vData r -> Versions vNum vData r #

sconcat :: NonEmpty (Versions vNum vData r) -> Versions vNum vData r #

stimes :: Integral b => b -> Versions vNum vData r -> Versions vNum vData r #

newtype Application vData r Source #

Takes a pair of version data: local then remote.

Constructors

Application 

Fields

Instances

Instances details
Functor (Application vData) Source # 
Instance details

Defined in Ouroboros.Network.Protocol.Handshake.Version

Methods

fmap :: (a -> b) -> Application vData a -> Application vData b #

(<$) :: a -> Application vData b -> Application vData a #

data Version vData r Source #

Constructors

Version 

Fields

Instances

Instances details
Functor (Version vData) Source # 
Instance details

Defined in Ouroboros.Network.Protocol.Handshake.Version

Methods

fmap :: (a -> b) -> Version vData a -> Version vData b #

(<$) :: a -> Version vData b -> Version vData a #

data Accept vData Source #

A Maybe like type which better explains its purpose.

Constructors

Accept vData 
Refuse !Text 

Instances

Instances details
Eq vData => Eq (Accept vData) Source # 
Instance details

Defined in Ouroboros.Network.Protocol.Handshake.Version

Methods

(==) :: Accept vData -> Accept vData -> Bool #

(/=) :: Accept vData -> Accept vData -> Bool #

Show vData => Show (Accept vData) Source # 
Instance details

Defined in Ouroboros.Network.Protocol.Handshake.Version

Methods

showsPrec :: Int -> Accept vData -> ShowS #

show :: Accept vData -> String #

showList :: [Accept vData] -> ShowS #

data VersionMismatch vNum where Source #

Simple or no versioning

simpleSingletonVersions :: vNum -> vData -> r -> Versions vNum vData r Source #

Singleton smart constructor for Versions.

foldMapVersions :: (Ord vNum, Foldable f, HasCallStack) => (x -> Versions vNum extra r) -> f x -> Versions vNum extra r Source #

Useful for folding multiple Versions.

A foldMap restricted to the Versions Semigroup.

PRECONDITION: f x is non-empty.

combineVersions :: (Ord vNum, Foldable f, HasCallStack) => f (Versions vNum extra r) -> Versions vNum extra r Source #