summaryrefslogtreecommitdiff
path: root/src/Erebos/Network.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-08-01 10:26:11 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-08-01 21:44:50 +0200
commitfa7f753b99d09cb59f110854d42d7f9104cf4f4d (patch)
tree6fef8c1c2705f5ba80ab7d95ac8b24fa948b36c5 /src/Erebos/Network.hs
parent8f1b6ef7f6b68931e961bf1725c5f8c711c278ff (diff)
Option for PeerAddressType to mark it as reliable
Changelog: Added API to mark a custom underlying transport layer as reliable.
Diffstat (limited to 'src/Erebos/Network.hs')
-rw-r--r--src/Erebos/Network.hs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/Erebos/Network.hs b/src/Erebos/Network.hs
index 92f62ff..c2a714e 100644
--- a/src/Erebos/Network.hs
+++ b/src/Erebos/Network.hs
@@ -180,6 +180,8 @@ instance Eq Peer where
class (Eq addr, Ord addr, Show addr, Typeable addr) => PeerAddressType addr where
sendBytesToAddress :: addr -> ByteString -> IO ()
connectionToAddressClosed :: addr -> IO ()
+ isReliableTransport :: proxy addr -> Bool
+ isReliableTransport _ = False
data PeerAddress
= forall addr. PeerAddressType addr => CustomPeerAddress addr
@@ -208,6 +210,11 @@ instance Ord PeerAddress where
compare (DatagramAddress addr) (DatagramAddress addr') = compare addr addr'
+instance ProtocolAddressType PeerAddress where
+ addrIsReliableTransport = \case
+ CustomPeerAddress (_ :: a) -> isReliableTransport (Proxy @a)
+ DatagramAddress _ -> False
+
data PeerIdentity
= PeerIdentityUnknown (TVar [ UnifiedIdentity -> ExceptT ErebosError IO () ])