diff --git a/hbs2-core/lib/HBS2/Actors/Peer/Types.hs b/hbs2-core/lib/HBS2/Actors/Peer/Types.hs index 18ccd5b0..9ac45496 100644 --- a/hbs2-core/lib/HBS2/Actors/Peer/Types.hs +++ b/hbs2-core/lib/HBS2/Actors/Peer/Types.hs @@ -1,3 +1,4 @@ +{-# Language AllowAmbiguousTypes #-} module HBS2.Actors.Peer.Types where import HBS2.Storage @@ -31,7 +32,7 @@ instance (Monad m, HasStorage m) => HasStorage (MaybeT m) where getStorage = lift getStorage -class HasProtocol e p => HasGossip p e m where +class (Monad m, HasProtocol e p) => HasGossip e p m where gossip :: p -> m () diff --git a/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs b/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs index e6e3b056..3d2da450 100644 --- a/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs +++ b/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs @@ -165,7 +165,7 @@ refChanHeadProto :: forall e s m . ( MonadIO m , Pretty (Peer e) , Sessions e (KnownPeer e) m , HasStorage m - , HasGossip (RefChanHead e) e m + -- , HasGossip (RefChanHead e) e m , Signatures s , IsRefPubKey s , Pretty (AsBase58 (PubKey 'Sign s)) @@ -223,7 +223,7 @@ refChanUpdateProto :: forall e s m . ( MonadIO m , Sessions e (KnownPeer e) m , Sessions e (RefChanHeadBlock e) m , HasStorage m - , HasGossip (RefChanUpdate e) e m + , HasGossip e (RefChanUpdate e) m , Signatures s , IsRefPubKey s , Pretty (AsBase58 (PubKey 'Sign s)) diff --git a/hbs2-core/lib/HBS2/Net/Proto/Sessions.hs b/hbs2-core/lib/HBS2/Net/Proto/Sessions.hs index 39a22cd1..ffc70fed 100644 --- a/hbs2-core/lib/HBS2/Net/Proto/Sessions.hs +++ b/hbs2-core/lib/HBS2/Net/Proto/Sessions.hs @@ -39,6 +39,7 @@ class ( Monad m , Eq (SessionKey e p) , Hashable (SessionKey e p) , Typeable (SessionData e p) + , Typeable (SessionKey e p) ) => Sessions e p m where diff --git a/hbs2-peer/app/PeerTypes.hs b/hbs2-peer/app/PeerTypes.hs index 1b7e18a1..ad183b37 100644 --- a/hbs2-peer/app/PeerTypes.hs +++ b/hbs2-peer/app/PeerTypes.hs @@ -347,7 +347,7 @@ failedDownload p h = do addDownload mzero h -- FIXME: brains-download-fail -type ForGossip p e m = +type ForGossip e p m = ( MonadIO m , MyPeer e , HasPeerLocator e m @@ -356,7 +356,7 @@ type ForGossip p e m = , Sessions e (KnownPeer e) m ) -broadCastMessage :: forall e p m . ( ForGossip p e m ) +broadCastMessage :: forall e p m . ( ForGossip e p m ) => p -> m () broadCastMessage msg = do @@ -455,13 +455,10 @@ polling o listEntries action = do ) refs0 -instance (ForGossip p e m, HasPeer e, Sessions e (KnownPeer e) m, HasPeerLocator e m) => HasGossip p e (PeerM e m) where +instance (ForGossip e p (PeerM e IO)) => HasGossip e p (PeerM e IO) where gossip msg = do - pips <- getKnownPeers @e - pure () + broadCastMessage msg -instance (Monad m, HasGossip p e (PeerM e m)) => HasGossip p e (ResponseM e (PeerM e m)) where +instance (ForGossip e p (ResponseM e m), HasGossip e p m) => HasGossip e p (ResponseM e m) where gossip = lift . gossip - -