Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Protocol.Handshake.Type
Contents
Synopsis
- data Handshake vNumber vParams where
- data family Message ps (st :: ps) (st' :: ps)
- data family ClientHasAgency (st :: ps)
- data family ServerHasAgency (st :: ps)
- data family NobodyHasAgency (st :: ps)
-
data
RefuseReason
vNumber
- = VersionMismatch [vNumber] [ Int ]
- | HandshakeDecodeError vNumber Text
- | Refused vNumber Text
-
data
HandshakeProtocolError
vNumber
- = HandshakeError ( RefuseReason vNumber)
- | NotRecognisedVersion vNumber
- | InvalidServerSelection vNumber Text
Handshake Protocol
data Handshake vNumber vParams where Source #
The handshake mini-protocol is used initially to agree the version and associated parameters of the protocol to use for all subsequent communication.
Constructors
StPropose :: Handshake vNumber vParams | |
StConfirm :: Handshake vNumber vParams | |
StDone :: Handshake vNumber vParams |
Instances
ShowProxy ( Handshake vNumber vParams :: Type ) Source # | |
Show ( ServerHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type |
|
Show ( ClientHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type |
|
( Show vNumber, Show vParams) => Show ( Message ( Handshake vNumber vParams) from to) Source # | |
Protocol ( Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type Associated Types data Message ( Handshake vNumber vParams) st st' Source # data ClientHasAgency st Source # data ServerHasAgency st Source # data NobodyHasAgency st Source # Methods exclusionLemma_ClientAndServerHaveAgency :: forall (st :: Handshake vNumber vParams). ClientHasAgency st -> ServerHasAgency st -> Void Source # exclusionLemma_NobodyAndClientHaveAgency :: forall (st :: Handshake vNumber vParams). NobodyHasAgency st -> ClientHasAgency st -> Void Source # exclusionLemma_NobodyAndServerHaveAgency :: forall (st :: Handshake vNumber vParams). NobodyHasAgency st -> ServerHasAgency st -> Void Source # |
|
data NobodyHasAgency (st :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
NobodyHasAgency
(st ::
Handshake
vNumber vParams)
where
|
|
data ServerHasAgency (st :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
ServerHasAgency
(st ::
Handshake
vNumber vParams)
where
|
|
data ClientHasAgency (st :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
ClientHasAgency
(st ::
Handshake
vNumber vParams)
where
|
|
data Message ( Handshake vNumber vParams) (from :: Handshake vNumber vParams) (to :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
Message
(
Handshake
vNumber vParams) (from ::
Handshake
vNumber vParams) (to ::
Handshake
vNumber vParams)
where
|
data family Message ps (st :: ps) (st' :: ps) Source #
The messages for this protocol. It is expected to be a GADT that is
indexed by the
from
and
to
protocol states. That is the protocol state
the message transitions from, and the protocol state it transitions into.
These are the edges of the protocol state transition system.
Instances
( Show vNumber, Show vParams) => Show ( Message ( Handshake vNumber vParams) from to) Source # | |
data Message ( Handshake vNumber vParams) (from :: Handshake vNumber vParams) (to :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
Message
(
Handshake
vNumber vParams) (from ::
Handshake
vNumber vParams) (to ::
Handshake
vNumber vParams)
where
|
data family ClientHasAgency (st :: ps) Source #
Tokens for those protocol states in which the client has agency.
Instances
Show ( ClientHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type |
|
data ClientHasAgency (st :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
ClientHasAgency
(st ::
Handshake
vNumber vParams)
where
|
data family ServerHasAgency (st :: ps) Source #
Tokens for those protocol states in which the server has agency.
Instances
Show ( ServerHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type |
|
data ServerHasAgency (st :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
ServerHasAgency
(st ::
Handshake
vNumber vParams)
where
|
data family NobodyHasAgency (st :: ps) Source #
Tokens for terminal protocol states in which neither the client nor server has agency.
Instances
data NobodyHasAgency (st :: Handshake vNumber vParams) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type
data
NobodyHasAgency
(st ::
Handshake
vNumber vParams)
where
|
On simultaneous open both sides will send
MsgProposeVersions
, which will be
decoded as
MsgReplyVersions
. It is a terminal message of the protocol. It
is important to stress that in this case both sides will make the choice
which version and parameters to pick. Our algorithm for picking version is
symmetric, which ensures that both sides will end up with the same choice.
If one side decides to refuse the version it will close the connection,
without sending the reason to the other side.
data RefuseReason vNumber Source #
Reasons by which a server can refuse proposed version.
Constructors
VersionMismatch [vNumber] [ Int ] |
All of the prosed versions where not known to the server.
Since the server sends all versions that it can knows about, some of them
we might not be able to decode, so we include raw tags
|
HandshakeDecodeError vNumber Text |
The server failed to decode version parameters. |
Refused vNumber Text |
The server refused to run the proposed version parameters |
Instances
Eq vNumber => Eq ( RefuseReason vNumber) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type Methods (==) :: RefuseReason vNumber -> RefuseReason vNumber -> Bool Source # (/=) :: RefuseReason vNumber -> RefuseReason vNumber -> Bool Source # |
|
Show vNumber => Show ( RefuseReason vNumber) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type |
|
( Typeable vNumber, Show vNumber) => Exception ( RefuseReason vNumber) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type Methods toException :: RefuseReason vNumber -> SomeException Source # fromException :: SomeException -> Maybe ( RefuseReason vNumber) Source # displayException :: RefuseReason vNumber -> String Source # |
data HandshakeProtocolError vNumber Source #
Extends handshake error
type, by client specific errors.
RefuseReason
Constructors
HandshakeError ( RefuseReason vNumber) | |
NotRecognisedVersion vNumber | |
InvalidServerSelection vNumber Text |
Instances
Eq vNumber => Eq ( HandshakeProtocolError vNumber) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type Methods (==) :: HandshakeProtocolError vNumber -> HandshakeProtocolError vNumber -> Bool Source # (/=) :: HandshakeProtocolError vNumber -> HandshakeProtocolError vNumber -> Bool Source # |
|
Show vNumber => Show ( HandshakeProtocolError vNumber) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type |
|
( Typeable vNumber, Show vNumber) => Exception ( HandshakeProtocolError vNumber) Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Type Methods toException :: HandshakeProtocolError vNumber -> SomeException Source # fromException :: SomeException -> Maybe ( HandshakeProtocolError vNumber) Source # displayException :: HandshakeProtocolError vNumber -> String Source # |