hbs2/hbs2-core/lib/HBS2/Net/PeerLocator.hs

18 lines
520 B
Haskell

{-# Language AllowAmbiguousTypes #-}
module HBS2.Net.PeerLocator where
import HBS2.Prelude
import HBS2.Net.Proto.Types
class PeerLocator e l where
knownPeers :: forall m . (HasPeer e, MonadIO m) => l -> m [Peer e]
addPeers :: forall m . (HasPeer e, MonadIO m) => l -> [Peer e] -> m ()
data AnyPeerLocator e = forall a . PeerLocator e a => AnyPeerLocator a
instance HasPeer e => PeerLocator e (AnyPeerLocator e) where
knownPeers (AnyPeerLocator l) = knownPeers l
addPeers (AnyPeerLocator l) = addPeers l