mirror of https://github.com/voidlizard/hbs2
18 lines
520 B
Haskell
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
|
|
|
|
|