This commit is contained in:
Sergey Ivanov 2023-05-12 11:20:14 +04:00 committed by Dmitry Zuikov
parent 829c7378fd
commit 78bb0c45c1
6 changed files with 13 additions and 2 deletions

View File

@ -8,6 +8,7 @@ import System.Random.Shuffle (shuffleM)
class PeerLocator e l where
knownPeers :: forall m . (HasPeer e, MonadIO m) => l -> m [Peer e]
-- knownListeningPeers :: forall m . (HasPeer e, MonadIO m) => l -> m [Peer e]
addPeers :: forall m . (HasPeer e, MonadIO m) => l -> [Peer e] -> m ()
delPeers :: forall m . (HasPeer e, MonadIO m) => l -> [Peer e] -> m ()
bestPeers :: forall m . (HasPeer e, MonadIO m) => l -> m [Peer e]
@ -17,6 +18,7 @@ data AnyPeerLocator e = forall a . PeerLocator e a => AnyPeerLocator a
instance HasPeer e => PeerLocator e (AnyPeerLocator e) where
knownPeers (AnyPeerLocator l) = knownPeers l
-- knownListeningPeers (AnyPeerLocator l) = knownListeningPeers l
addPeers (AnyPeerLocator l) = addPeers l
delPeers (AnyPeerLocator l) = delPeers l
addExcluded (AnyPeerLocator l) = addExcluded l

View File

@ -33,6 +33,12 @@ instance (Ord (Peer e), Pretty (Peer e)) => PeerLocator e (StaticPeerLocator e)
excl <- liftIO $ readTVarIO e
pure $ Set.toList (ps `Set.difference` excl)
-- knownListeningPeers (StaticPeerLocator peers e) = do
-- -- pips <- knownPeers @e pl >>= filterM (liftIO . atomically . readTVar . _peerTcpAvailable)
-- ps <- liftIO $ readTVarIO peers
-- excl <- liftIO $ readTVarIO e
-- pure $ Set.toList (ps `Set.difference` excl)
addPeers (StaticPeerLocator peers te) new = do
excl <- liftIO $ readTVarIO te
liftIO $ atomically $ modifyTVar' peers ((`Set.difference` excl) . (<> Set.fromList new))

View File

@ -105,6 +105,7 @@ peerExchangeProto msg = do
pl <- getPeerLocator @e
pips <- knownPeers @e pl
-- pips <- knownListeningPeers @e pl
case pex of
PEX1 -> do

View File

@ -594,7 +594,7 @@ postponedLoop env0 = do
-- for_ (w:ws) $ addDownload mzero
next
void $ liftIO $ async $ withPeerM e $ withDownload env0 do
void $ liftIO $ withPeerM e $ withDownload env0 do
forever do
pause @'Seconds 30
trace "UNPOSTPONE LOOP"

View File

@ -750,7 +750,7 @@ runPeer opts = Exception.handle myException $ do
when useHttpDownload do
peerThread "blockHttpDownloadLoop " (blockHttpDownloadLoop denv)
-- peerThread "postponedLoop" (postponedLoop denv)
peerThread "postponedLoop" (postponedLoop denv)
peerThread "downloadQueue" (downloadQueue conf denv)

View File

@ -65,6 +65,7 @@ data PeerInfo e =
, _peerHttpApiAddress :: TVar (Either Int (Maybe String))
, _peerHttpDownloaded :: TVar Int
, _peerMeta :: TVar (Maybe PeerMeta)
, _peerTcpAvailable :: TVar Bool
}
deriving stock (Generic,Typeable)
@ -89,6 +90,7 @@ newPeerInfo = liftIO do
<*> newTVarIO (Left 0)
<*> newTVarIO 0
<*> newTVarIO Nothing
<*> newTVarIO False
type instance SessionData e (PeerInfo e) = PeerInfo e