Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data PeerConfig = PeerConfig {}
- data PeerEvent
- data Conduits = Conduits {
- inboundConduit :: ConduitT () ByteString IO ()
- outboundConduit :: ConduitT ByteString Void IO ()
- data PeerException
- type WithConnection = (Conduits -> IO ()) -> IO ()
- data Peer = Peer {}
- peer :: (MonadUnliftIO m, MonadLoggerIO m) => PeerConfig -> TVar Bool -> Inbox PeerMessage -> m ()
- wrapPeer :: MonadIO m => PeerConfig -> TVar Bool -> Mailbox PeerMessage -> m Peer
- sendMessage :: MonadIO m => Message -> Peer -> m ()
- killPeer :: MonadIO m => PeerException -> Peer -> m ()
- getBlocks :: MonadUnliftIO m => Network -> Int -> Peer -> [BlockHash] -> m (Maybe [Block])
- getTxs :: MonadUnliftIO m => Network -> Int -> Peer -> [TxHash] -> m (Maybe [Tx])
- getData :: MonadUnliftIO m => Int -> Peer -> GetData -> m (Maybe [Either Tx Block])
- pingPeer :: MonadUnliftIO m => Int -> Peer -> m Bool
- getBusy :: MonadIO m => Peer -> m Bool
- setBusy :: MonadIO m => Peer -> m Bool
- setFree :: MonadIO m => Peer -> m ()
- data PeerMgrConfig = PeerMgrConfig {
- maxPeers :: !Int
- peers :: ![String]
- discover :: !Bool
- address :: !NetworkAddress
- net :: !Network
- pub :: !(Publisher PeerEvent)
- timeout :: !NominalDiffTime
- maxPeerLife :: !NominalDiffTime
- connect :: !(SockAddr -> WithConnection)
- data PeerEvent
- data OnlinePeer = OnlinePeer {}
- data PeerMgr
- withPeerMgr :: (MonadUnliftIO m, MonadLoggerIO m) => PeerMgrConfig -> (PeerMgr -> m a) -> m a
- peerMgrBest :: MonadIO m => BlockHeight -> PeerMgr -> m ()
- peerMgrVersion :: MonadIO m => Peer -> Version -> PeerMgr -> m ()
- peerMgrPing :: MonadIO m => Peer -> Word64 -> PeerMgr -> m ()
- peerMgrPong :: MonadIO m => Peer -> Word64 -> PeerMgr -> m ()
- peerMgrAddrs :: MonadIO m => Peer -> [NetworkAddress] -> PeerMgr -> m ()
- peerMgrVerAck :: MonadIO m => Peer -> PeerMgr -> m ()
- peerMgrTickle :: MonadIO m => Peer -> PeerMgr -> m ()
- getPeers :: MonadIO m => PeerMgr -> m [OnlinePeer]
- getOnlinePeer :: MonadIO m => Peer -> PeerMgr -> m (Maybe OnlinePeer)
- buildVersion :: Network -> Word64 -> BlockHeight -> NetworkAddress -> NetworkAddress -> Word64 -> Version
- myVersion :: Word32
- toSockAddr :: MonadUnliftIO m => Network -> String -> m [SockAddr]
- toHostService :: String -> (Maybe String, Maybe String)
- data ChainConfig = ChainConfig {
- db :: !DB
- cf :: !(Maybe ColumnFamily)
- net :: !Network
- pub :: !(Publisher ChainEvent)
- timeout :: !NominalDiffTime
- data ChainEvent
- data Chain
- withChain :: (MonadUnliftIO m, MonadLoggerIO m) => ChainConfig -> (Chain -> m a) -> m a
- chainGetBlock :: MonadIO m => BlockHash -> Chain -> m (Maybe BlockNode)
- chainGetBest :: MonadIO m => Chain -> m BlockNode
- chainGetAncestor :: MonadIO m => BlockHeight -> BlockNode -> Chain -> m (Maybe BlockNode)
- chainGetParents :: MonadIO m => BlockHeight -> BlockNode -> Chain -> m [BlockNode]
- chainGetSplitBlock :: MonadIO m => BlockNode -> BlockNode -> Chain -> m BlockNode
- chainPeerConnected :: MonadIO m => Peer -> Chain -> m ()
- chainPeerDisconnected :: MonadIO m => Peer -> Chain -> m ()
- chainIsSynced :: MonadIO m => Chain -> m Bool
- chainBlockMain :: MonadIO m => BlockHash -> Chain -> m Bool
- chainHeaders :: MonadIO m => Peer -> [BlockHeader] -> Chain -> m ()
- data NodeConfig = NodeConfig {
- maxPeers :: !Int
- db :: !DB
- cf :: !(Maybe ColumnFamily)
- peers :: ![String]
- discover :: !Bool
- address :: !NetworkAddress
- net :: !Network
- pub :: !(Publisher NodeEvent)
- timeout :: !NominalDiffTime
- maxPeerLife :: !NominalDiffTime
- connect :: !(SockAddr -> WithConnection)
- data NodeEvent
- data Node = Node {}
- withNode :: (MonadLoggerIO m, MonadUnliftIO m) => NodeConfig -> (Node -> m a) -> m a
- withConnection :: SockAddr -> WithConnection
Documentation
data PeerConfig Source #
Conduits | |
|
data PeerException Source #
Instances
Exception PeerException Source # | |
Defined in Haskoin.Node.Peer | |
Show PeerException Source # | |
Defined in Haskoin.Node.Peer showsPrec :: Int -> PeerException -> ShowS # show :: PeerException -> String # showList :: [PeerException] -> ShowS # | |
Eq PeerException Source # | |
Defined in Haskoin.Node.Peer (==) :: PeerException -> PeerException -> Bool # (/=) :: PeerException -> PeerException -> Bool # |
Mailbox for a peer.
peer :: (MonadUnliftIO m, MonadLoggerIO m) => PeerConfig -> TVar Bool -> Inbox PeerMessage -> m () Source #
Run peer process in current thread.
killPeer :: MonadIO m => PeerException -> Peer -> m () Source #
Kill a peer with the provided exception.
getBlocks :: MonadUnliftIO m => Network -> Int -> Peer -> [BlockHash] -> m (Maybe [Block]) Source #
Request full blocks from peer. Will return Nothing
if the list of blocks
returned by the peer is incomplete, comes out of order, or a timeout is
reached.
getTxs :: MonadUnliftIO m => Network -> Int -> Peer -> [TxHash] -> m (Maybe [Tx]) Source #
Request transactions from peer. Will return Nothing
if the list of
transactions returned by the peer is incomplete, comes out of order, or a
timeout is reached.
getData :: MonadUnliftIO m => Int -> Peer -> GetData -> m (Maybe [Either Tx Block]) Source #
Request transactions and/or blocks from peer. Return Nothing
if any
single inventory fails to be retrieved, if they come out of order, or if
timeout is reached.
pingPeer :: MonadUnliftIO m => Int -> Peer -> m Bool Source #
Ping a peer and await response. Return False
if response not received
before timeout.
data PeerMgrConfig Source #
PeerMgrConfig | |
|
data OnlinePeer Source #
Data structure representing an online peer.
Instances
Eq OnlinePeer Source # | |
Defined in Haskoin.Node.PeerMgr (==) :: OnlinePeer -> OnlinePeer -> Bool # (/=) :: OnlinePeer -> OnlinePeer -> Bool # | |
Ord OnlinePeer Source # | |
Defined in Haskoin.Node.PeerMgr compare :: OnlinePeer -> OnlinePeer -> Ordering # (<) :: OnlinePeer -> OnlinePeer -> Bool # (<=) :: OnlinePeer -> OnlinePeer -> Bool # (>) :: OnlinePeer -> OnlinePeer -> Bool # (>=) :: OnlinePeer -> OnlinePeer -> Bool # max :: OnlinePeer -> OnlinePeer -> OnlinePeer # min :: OnlinePeer -> OnlinePeer -> OnlinePeer # |
withPeerMgr :: (MonadUnliftIO m, MonadLoggerIO m) => PeerMgrConfig -> (PeerMgr -> m a) -> m a Source #
peerMgrBest :: MonadIO m => BlockHeight -> PeerMgr -> m () Source #
peerMgrAddrs :: MonadIO m => Peer -> [NetworkAddress] -> PeerMgr -> m () Source #
getOnlinePeer :: MonadIO m => Peer -> PeerMgr -> m (Maybe OnlinePeer) Source #
buildVersion :: Network -> Word64 -> BlockHeight -> NetworkAddress -> NetworkAddress -> Word64 -> Version Source #
toSockAddr :: MonadUnliftIO m => Network -> String -> m [SockAddr] Source #
data ChainConfig Source #
Configuration for chain syncing process.
ChainConfig | |
|
Instances
MonadIO m => BlockHeaders (ReaderT ChainConfig m) Source # | |
Defined in Haskoin.Node.Chain addBlockHeader :: BlockNode -> ReaderT ChainConfig m () # getBlockHeader :: BlockHash -> ReaderT ChainConfig m (Maybe BlockNode) # getBestBlockHeader :: ReaderT ChainConfig m BlockNode # setBestBlockHeader :: BlockNode -> ReaderT ChainConfig m () # addBlockHeaders :: [BlockNode] -> ReaderT ChainConfig m () # |
data ChainEvent Source #
Events originating from chain syncing process.
ChainBestBlock !BlockNode | chain has new best block |
ChainSynced !BlockNode | chain is in sync with the network |
Instances
Show ChainEvent Source # | |
Defined in Haskoin.Node.Chain showsPrec :: Int -> ChainEvent -> ShowS # show :: ChainEvent -> String # showList :: [ChainEvent] -> ShowS # | |
Eq ChainEvent Source # | |
Defined in Haskoin.Node.Chain (==) :: ChainEvent -> ChainEvent -> Bool # (/=) :: ChainEvent -> ChainEvent -> Bool # |
Mailbox for chain header syncing process.
withChain :: (MonadUnliftIO m, MonadLoggerIO m) => ChainConfig -> (Chain -> m a) -> m a Source #
chainGetBlock :: MonadIO m => BlockHash -> Chain -> m (Maybe BlockNode) Source #
Get a block header from Chain
process.
chainGetAncestor :: MonadIO m => BlockHeight -> BlockNode -> Chain -> m (Maybe BlockNode) Source #
Get ancestor of BlockNode
at BlockHeight
from chain process.
chainGetParents :: MonadIO m => BlockHeight -> BlockNode -> Chain -> m [BlockNode] Source #
Get parents of BlockNode
starting at BlockHeight
from chain process.
chainGetSplitBlock :: MonadIO m => BlockNode -> BlockNode -> Chain -> m BlockNode Source #
Get last common block from chain process.
chainPeerConnected :: MonadIO m => Peer -> Chain -> m () Source #
Notify chain that a new peer is connected.
chainPeerDisconnected :: MonadIO m => Peer -> Chain -> m () Source #
Notify chain that a peer has disconnected.
chainBlockMain :: MonadIO m => BlockHash -> Chain -> m Bool Source #
Is given BlockHash
in the main chain?
chainHeaders :: MonadIO m => Peer -> [BlockHeader] -> Chain -> m () Source #
Peer sends a bunch of headers to the chain process.
data NodeConfig Source #
General node configuration.
NodeConfig | |
|
withNode :: (MonadLoggerIO m, MonadUnliftIO m) => NodeConfig -> (Node -> m a) -> m a Source #
Launch node process in the foreground.