From 3550d8d62494fd1ada6c149ea87843bd7b56acd3 Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Wed, 7 Feb 2024 13:08:01 +0300 Subject: [PATCH] threaded download --- hbs2-peer/app/PeerMain.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hbs2-peer/app/PeerMain.hs b/hbs2-peer/app/PeerMain.hs index d1bc0d1f..b668c216 100644 --- a/hbs2-peer/app/PeerMain.hs +++ b/hbs2-peer/app/PeerMain.hs @@ -141,6 +141,7 @@ data PeerTraceKey data PeerTrace1Key data PeerProxyFetchKey data PeerTcpSOCKS5 +data PeerDownloadThreadKey instance Monad m => HasCfgKey PeerDebugKey a m where @@ -170,6 +171,9 @@ instance Monad m => HasCfgKey PeerProxyFetchKey (Set String) m where instance Monad m => HasCfgKey PeerTcpSOCKS5 (Maybe String) m where key = "tcp.socks5" +instance Monad m => HasCfgKey PeerDownloadThreadKey (Maybe Int) m where + key = "download-threads" + data PeerOpts = PeerOpts { _storage :: Maybe StoragePrefix @@ -642,6 +646,8 @@ runPeer opts = Exception.handle (\e -> myException e let tcpProbeWait = runReader (cfgValue @PeerTcpProbeWaitKey) syn & fromInteger @(Timeout 'Seconds) . fromMaybe 300 + let downloadThreadNum = runReader (cfgValue @PeerDownloadThreadKey) syn & fromMaybe 2 + let useSocks5 = runReader (cfgValue @PeerTcpSOCKS5) syn let listenSa = view listenOn opts <|> listenConf <|> Just "0.0.0.0:7351" @@ -1019,7 +1025,8 @@ runPeer opts = Exception.handle (\e -> myException e peerThread "pexLoop" (pexLoop @e brains tcp) - peerThread "blockDownloadLoop" (blockDownloadLoop denv) + replicateM_ downloadThreadNum do + peerThread "blockDownloadLoop" (blockDownloadLoop denv) peerThread "blockDownloadQ" (downloadQueue conf (SomeBrains brains) denv)