Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Server.ConnectionTable
Synopsis
- data ConnectionTable m addr
- data ConnectionTableRef
- data ConnectionDirection
- data ValencyCounter m
- newConnectionTableSTM ∷ MonadSTM m ⇒ STM m (ConnectionTable m addr)
- newConnectionTable ∷ MonadSTM m ⇒ m (ConnectionTable m addr)
- refConnectionSTM ∷ (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → ConnectionDirection → ValencyCounter m → STM m ConnectionTableRef
- refConnection ∷ (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → ConnectionDirection → ValencyCounter m → m ConnectionTableRef
- addConnection ∷ ∀ m addr. (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → addr → ConnectionDirection → Maybe (ValencyCounter m) → STM m ()
- removeConnectionSTM ∷ ∀ m addr. (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → addr → ConnectionDirection → STM m ()
- removeConnection ∷ ∀ m addr. (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → addr → ConnectionDirection → m ()
- newValencyCounter ∷ MonadSTM m ⇒ ConnectionTable m addr → Int → STM m (ValencyCounter m)
- addValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m ()
- remValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m ()
- waitValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m ()
- readValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m Int
Documentation
data ConnectionTable m addr Source #
data ConnectionTableRef Source #
Constructors
ConnectionTableCreate | No connection to peer exists, attempt to create one. |
ConnectionTableExist | A connection to the peer existed, either from another subscriber or the peer opened one towards us. |
ConnectionTableDuplicate | This subscriber already has counted a connection to this peer. It must try another target. |
Instances
data ConnectionDirection Source #
Tracks connection direction. Used to differentiate between outbound connections we are required to create and inbound connections from the same peer.
Constructors
ConnectionInbound | |
ConnectionOutbound |
Instances
data ValencyCounter m Source #
ValencyCounter represents how many active connections we have towards a given peer. It starts out with a positive value representing a desired number of connections for a specific subscription worker. It can become negative, for example if a peer opens multiple connections to us. The vcId is unique per ConnectionTable and ensures that we won't count the same connection twice.
Instances
Eq (ValencyCounter m) Source # | |
Defined in Ouroboros.Network.Server.ConnectionTable Methods (==) ∷ ValencyCounter m → ValencyCounter m → Bool Source # (/=) ∷ ValencyCounter m → ValencyCounter m → Bool Source # | |
Ord (ValencyCounter m) Source # | |
Defined in Ouroboros.Network.Server.ConnectionTable Methods compare ∷ ValencyCounter m → ValencyCounter m → Ordering Source # (<) ∷ ValencyCounter m → ValencyCounter m → Bool Source # (<=) ∷ ValencyCounter m → ValencyCounter m → Bool Source # (>) ∷ ValencyCounter m → ValencyCounter m → Bool Source # (>=) ∷ ValencyCounter m → ValencyCounter m → Bool Source # max ∷ ValencyCounter m → ValencyCounter m → ValencyCounter m Source # min ∷ ValencyCounter m → ValencyCounter m → ValencyCounter m Source # |
newConnectionTableSTM ∷ MonadSTM m ⇒ STM m (ConnectionTable m addr) Source #
Create a new ConnectionTable.
newConnectionTable ∷ MonadSTM m ⇒ m (ConnectionTable m addr) Source #
refConnectionSTM ∷ (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → ConnectionDirection → ValencyCounter m → STM m ConnectionTableRef Source #
Try to see if it is possible to reference an existing connection rather than creating a new one to the provied peer.
refConnection ∷ (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → ConnectionDirection → ValencyCounter m → m ConnectionTableRef Source #
Arguments
∷ ∀ m addr. (MonadSTM m, Ord addr) | |
⇒ ConnectionTable m addr | |
→ addr | |
→ addr | |
→ ConnectionDirection | |
→ Maybe (ValencyCounter m) | Optional ValencyCounter, used by subscription worker and set to Nothing when called by a local server. |
→ STM m () |
Insert a new connection into the ConnectionTable.
removeConnectionSTM ∷ ∀ m addr. (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → addr → ConnectionDirection → STM m () Source #
Remove a Connection.
removeConnection ∷ ∀ m addr. (MonadSTM m, Ord addr) ⇒ ConnectionTable m addr → addr → addr → ConnectionDirection → m () Source #
Arguments
∷ MonadSTM m | |
⇒ ConnectionTable m addr | |
→ Int | Desired valency, that is number of connections a subscription worker will attempt to maintain. |
→ STM m (ValencyCounter m) |
Create a new ValencyCounter
addValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m () Source #
Add a connection.
remValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m () Source #
Remove a connection.
waitValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m () Source #
Wait until ValencyCounter becomes positive, used for detecting when we can create new connections.
readValencyCounter ∷ MonadSTM m ⇒ ValencyCounter m → STM m Int Source #
Returns current ValencyCounter value, represent the number of additional connections that can be created. May be negative.