wip, introduced typeclass for gossip

This commit is contained in:
Dmitry Zuikov 2023-07-17 12:34:18 +03:00
parent 3c10aad828
commit 07003409c3
4 changed files with 10 additions and 11 deletions

View File

@ -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 ()

View File

@ -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))

View File

@ -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

View File

@ -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