mirror of https://github.com/voidlizard/hbs2
wip
This commit is contained in:
parent
69cd2622f2
commit
ef9271b808
|
@ -73,6 +73,8 @@ library
|
||||||
, HBS2.Merkle
|
, HBS2.Merkle
|
||||||
, HBS2.Net.Messaging
|
, HBS2.Net.Messaging
|
||||||
, HBS2.Net.Messaging.Fake
|
, HBS2.Net.Messaging.Fake
|
||||||
|
, HBS2.Net.PeerLocator
|
||||||
|
, HBS2.Net.PeerLocator.Static
|
||||||
, HBS2.Net.Proto
|
, HBS2.Net.Proto
|
||||||
, HBS2.Net.Proto.Actors.BlockInfo
|
, HBS2.Net.Proto.Actors.BlockInfo
|
||||||
, HBS2.Prelude
|
, HBS2.Prelude
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
module HBS2.Net.PeerLocator where
|
||||||
|
|
||||||
|
import HBS2.Net.Proto
|
||||||
|
|
||||||
|
class (IsPeer peer, Monad m) => PeerLocator l peer m where
|
||||||
|
knownPeers :: l -> m [Peer peer]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
module HBS2.Net.PeerLocator.Static where
|
||||||
|
|
||||||
|
import HBS2.Prelude
|
||||||
|
import HBS2.Net.Proto
|
||||||
|
import HBS2.Net.PeerLocator
|
||||||
|
|
||||||
|
import Control.Concurrent.STM.TVar
|
||||||
|
import Data.Set (Set)
|
||||||
|
import Data.Set qualified as Set
|
||||||
|
|
||||||
|
newtype StaticPeerLocator p =
|
||||||
|
StaticPeerLocator (TVar (Set (Peer p)))
|
||||||
|
|
||||||
|
|
||||||
|
newStaticPeerLocator :: (IsPeer p, MonadIO m) => [Peer p] -> m (StaticPeerLocator p)
|
||||||
|
newStaticPeerLocator seeds = do
|
||||||
|
tv <- liftIO $ newTVarIO (Set.fromList seeds)
|
||||||
|
pure $ StaticPeerLocator tv
|
||||||
|
|
||||||
|
instance (MonadIO m, IsPeer p)
|
||||||
|
=> PeerLocator (StaticPeerLocator p) p m where
|
||||||
|
|
||||||
|
knownPeers _ = pure mempty
|
||||||
|
|
|
@ -5,7 +5,7 @@ import HBS2.Prelude.Plated
|
||||||
import Data.Kind
|
import Data.Kind
|
||||||
import Data.Hashable
|
import Data.Hashable
|
||||||
|
|
||||||
class (Hashable (Peer a), Eq (Peer a)) => IsPeer a where
|
class (Hashable (Peer a), Eq (Peer a), Ord (Peer a)) => IsPeer a where
|
||||||
data family Peer a :: Type
|
data family Peer a :: Type
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,14 @@ requestBlockInfo :: forall peer h m . ( MonadIO m
|
||||||
-> Hash h
|
-> Hash h
|
||||||
-> m ()
|
-> m ()
|
||||||
|
|
||||||
requestBlockInfo b _ h = do
|
requestBlockInfo b mp h = do
|
||||||
addJob (tasks b) do
|
addJob (tasks b) do
|
||||||
|
-- peers <- getPeers
|
||||||
|
-- TODO: get given peer or some other peers
|
||||||
|
-- TODO: get cookie from cookie generator
|
||||||
|
-- TODO: set waiting for request
|
||||||
|
-- TODO: send block info request to messaging
|
||||||
|
|
||||||
liftIO $ print ( "request-info" <+> pretty h)
|
liftIO $ print ( "request-info" <+> pretty h)
|
||||||
|
|
||||||
getBlockInfo :: MonadIO m
|
getBlockInfo :: MonadIO m
|
||||||
|
|
Loading…
Reference in New Issue