ouroboros-network-0.16.0.0: A networking layer for the Ouroboros blockchain protocol
Safe HaskellSafe-Inferred
LanguageHaskell2010

Ouroboros.Network.PeerSharing

Synopsis

Documentation

data PeerSharingController peer m Source #

Request and Result queue for the peer sharing client implementation.

Although Peer Sharing is a request-response protocol we can not run it as one, i.e. starting and terminating the protocol on demand since protocol termination as a different semantics. We have to keep the client and server protocol sides running and only issue the requests on demand.

A workaround to this is to implement the client side with the help of a PeerSharingController which contains two queues: request and result. The client side will be waiting to receive a PeerSharingAmount from the request queue and as soon as it gets something it will send a SendMsgShareRequest and wait for a response before writing it to the result queue.

newtype PeerSharingRegistry peer m Source #

Peer Sharing Registry is a registry that stores a PeerSharingController for every peer that we connect to.

bracketPeerSharingClient should be used.

bracketPeerSharingClient ∷ (Ord peer, MonadSTM m, MonadThrow m) ⇒ PeerSharingRegistry peer m → peer → (PeerSharingController peer m → m a) → m a Source #

data PeerSharingAPI addr s m Source #

PeerSharingAPI needed to compute the peers to be shared.

Constructors

PeerSharingAPI 

Fields

newPeerSharingAPIMonadSTM m ⇒ StrictTVar m (PublicPeerSelectionState addr) → s → DiffTimePeerSharingAmount → m (PeerSharingAPI addr s m) Source #

Create a new PeerSharingAPI

Constants

ps_POLICY_PEER_SHARE_STICKY_TIMEDiffTime Source #

Amount of time between changes to the salt used to pick peers to gossip about.

ps_POLICY_PEER_SHARE_MAX_PEERSPeerSharingAmount Source #

Maximum number of peers to respond with in a single request

Re-exports

data PeerSharingResult peerAddress Source #

PeerSharing Result type.

We need a constructor for the case when the Governor wins the race versus the Mux (when initialising the peer sharing miniprotocol). This leads the Governor to lookup a peer that hasn't been registered yet.

Constructors

PeerSharingResult [peerAddress] 
PeerSharingNotRegisteredYet 

Instances

Instances details
Show peerAddress ⇒ Show (PeerSharingResult peerAddress) 
Instance details

Defined in Ouroboros.Network.Protocol.PeerSharing.Type

Methods

showsPrecIntPeerSharingResult peerAddress → ShowS #

showPeerSharingResult peerAddress → String #

showList ∷ [PeerSharingResult peerAddress] → ShowS #

Eq peerAddress ⇒ Eq (PeerSharingResult peerAddress) 
Instance details

Defined in Ouroboros.Network.Protocol.PeerSharing.Type

Methods

(==)PeerSharingResult peerAddress → PeerSharingResult peerAddress → Bool #

(/=)PeerSharingResult peerAddress → PeerSharingResult peerAddress → Bool #