Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Hydra.Network
Contents
Description
Asynchronous messaging interface to the Hydra Network, e.g to other Hydra nodes.
Concrete implementations are provided by submodules. Import those instead of this one if interested in actually configuring and running a real network layer.
Incoming and outgoing messages are modelled as Message
data type.
Synopsis
- newtype Network m msg = Network {
- broadcast :: msg -> m ()
- data Host = Host {
- hostname :: Text
- port :: PortNumber
- newtype ProtocolVersion = ProtocolVersion Natural
- data NetworkCallback msg m = NetworkCallback {
- deliver :: msg -> m ()
- onConnectivity :: Connectivity -> m ()
- type NetworkComponent m inbound outbound a = NetworkCallback inbound m -> (Network m outbound -> m a) -> m a
- data Connectivity
- = PeerConnected { }
- | PeerDisconnected { }
- | NetworkConnected
- | NetworkDisconnected
- | VersionMismatch { }
- data NetworkConfiguration = NetworkConfiguration {
- persistenceDir :: FilePath
- signingKey :: SigningKey HydraKey
- otherParties :: [Party]
- listen :: Host
- advertise :: Host
- peers :: [Host]
- nodeId :: NodeId
- newtype NodeId = NodeId {}
- readHost :: MonadFail m => String -> m Host
- readPort :: MonadFail m => String -> m PortNumber
- showHost :: Host -> String
- data IP
- data PortNumber
Documentation
Constructors
Host | |
Fields
|
Instances
Arbitrary Host Source # | |
FromJSON Host Source # | |
Defined in Hydra.Network | |
ToJSON Host Source # | |
Defined in Hydra.Network Methods toEncoding :: Host -> Encoding toJSONList :: [Host] -> Value toEncodingList :: [Host] -> Encoding | |
Generic Host Source # | |
Read Host Source # | |
Show Host Source # | |
FromCBOR Host Source # | |
ToCBOR Host Source # | |
Defined in Hydra.Network Methods encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy Host -> Size encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [Host] -> Size | |
Eq Host Source # | |
Ord Host Source # | |
type Rep Host Source # | |
Defined in Hydra.Network type Rep Host = D1 ('MetaData "Host" "Hydra.Network" "hydra-node-0.21.0-K9GEdlBE90HJcNWdc0ihAv" 'False) (C1 ('MetaCons "Host" 'PrefixI 'True) (S1 ('MetaSel ('Just "hostname") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "port") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PortNumber))) |
newtype ProtocolVersion Source #
Constructors
ProtocolVersion Natural |
Instances
data NetworkCallback msg m Source #
Interface from network layer to the application. XXX: Reliably delivering a message in the crash-recovery fault model is tricky. According to "Introduction to Reliable and Secure Distributed Programming" section "2.2.4 Crashes with recoveries" explains that storing to stable storage and just pointing to stored events is a better way.
Constructors
NetworkCallback | |
Fields
|
type NetworkComponent m inbound outbound a = NetworkCallback inbound m -> (Network m outbound -> m a) -> m a Source #
A type tying both inbound and outbound messages sending in a single Component.
A NetworkComponent
can have different inbound and outbound message types.
data Connectivity Source #
Constructors
PeerConnected | Individual peer appeared alive on network. |
PeerDisconnected | Individual peer disappeared from network (has not been seen active in a while). |
NetworkConnected | Connected to Hydra network. |
NetworkDisconnected | Disconnected from Hydra network. |
VersionMismatch | |
Fields |
Instances
data NetworkConfiguration Source #
Configuration for a Node
network layer.
Constructors
NetworkConfiguration | |
Fields
|
Instances
Arbitrary NodeId Source # | |
FromJSON NodeId Source # | |
Defined in Hydra.Network | |
ToJSON NodeId Source # | |
Defined in Hydra.Network Methods toEncoding :: NodeId -> Encoding toJSONList :: [NodeId] -> Value toEncodingList :: [NodeId] -> Encoding | |
IsString NodeId Source # | |
Defined in Hydra.Network Methods fromString :: String -> NodeId Source # | |
Read NodeId Source # | |
Show NodeId Source # | |
Eq NodeId Source # | |
Ord NodeId Source # | |
Instances
Arbitrary IP | |
FromJSON IP | |
Defined in Hydra.Network | |
ToJSON IP | |
Defined in Hydra.Network | |
Data IP | |
Defined in Data.IP.Addr Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IP -> c IP Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IP Source # toConstr :: IP -> Constr Source # dataTypeOf :: IP -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IP) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IP) Source # gmapT :: (forall b. Data b => b -> b) -> IP -> IP Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IP -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IP -> r Source # gmapQ :: (forall d. Data d => d -> u) -> IP -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> IP -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> IP -> m IP Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IP -> m IP Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IP -> m IP Source # | |
IsString IP | |
Defined in Data.IP.Addr Methods fromString :: String -> IP Source # | |
Enum IP | |
Generic IP | |
Read IP | |
Show IP | |
Eq IP | |
Ord IP | |
type Rep IP | |
Defined in Data.IP.Addr type Rep IP = D1 ('MetaData "IP" "Data.IP.Addr" "iproute-1.7.15-6AApfiBXsvvLCjHCLgabKJ" 'False) (C1 ('MetaCons "IPv4" 'PrefixI 'True) (S1 ('MetaSel ('Just "ipv4") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedUnpack) (Rec0 IPv4)) :+: C1 ('MetaCons "IPv6" 'PrefixI 'True) (S1 ('MetaSel ('Just "ipv6") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 IPv6))) |
data PortNumber #
Instances
Orphan instances
Arbitrary PortNumber Source # | |
FromJSON IP Source # | |
FromJSON PortNumber Source # | |
ToJSON IP Source # | |
ToJSON PortNumber Source # | |
Methods toJSON :: PortNumber -> Value toEncoding :: PortNumber -> Encoding toJSONList :: [PortNumber] -> Value toEncodingList :: [PortNumber] -> Encoding omitField :: PortNumber -> Bool |