mirror of
https://github.com/kaspanet/kaspad.git
synced 2026-03-19 22:58:43 +00:00
* [NOD-1128] Add all flows to a directory names flows * [NOD-1128] Make everything in protocol package a manager method * [NOD-1128] Add AddTransaction mechanism to protocol manager * [NOD-1128] Add mempool related flows * [NOD-1128] Add mempool related flows * [NOD-1128] Add mempool related flows * [NOD-1127] Fix router message types * [NOD-1127] Inline updateQueues * [NOD-1127] Rename acceptedTxs->transactionsAcceptedToMempool * [NOD-1127] Add TODOs to notify transactions to RPC * [NOD-1127] Fix comment * [NOD-1127] Rename acceptedTxs->transactionsAcceptedToMempool * [NOD-1127] Rename MsgTxInv->MsgInvTransaction * [NOD-1127] Rename MsgTxInv.TXIDs->TxIDS * [NOD-1127] Change flow name * [NOD-1127] Call m.addTransactionRelayFlow * [NOD-1127] Remove redundant line * [NOD-1127] Use common.DefaultTimeout * [NOD-1127] Return early if len(idsToRequest) == 0 * [NOD-1127] Add NewBlockHandler to IBD
62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
package protocol
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/addrmgr"
|
|
"github.com/kaspanet/kaspad/blockdag"
|
|
"github.com/kaspanet/kaspad/config"
|
|
"github.com/kaspanet/kaspad/mempool"
|
|
"github.com/kaspanet/kaspad/netadapter"
|
|
"github.com/kaspanet/kaspad/protocol/flows/relaytransactions"
|
|
"github.com/kaspanet/kaspad/util"
|
|
"github.com/kaspanet/kaspad/util/daghash"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
// Manager manages the p2p protocol
|
|
type Manager struct {
|
|
cfg *config.Config
|
|
netAdapter *netadapter.NetAdapter
|
|
txPool *mempool.TxPool
|
|
addedTransactions []*util.Tx
|
|
dag *blockdag.BlockDAG
|
|
addressManager *addrmgr.AddrManager
|
|
|
|
transactionsToRebroadcastLock sync.Mutex
|
|
transactionsToRebroadcast map[daghash.TxID]*util.Tx
|
|
lastRebroadcastTime time.Time
|
|
sharedRequestedTransactions *relaytransactions.SharedRequestedTransactions
|
|
|
|
isInIBD uint32 // TODO(libp2p) populate this var
|
|
}
|
|
|
|
// NewManager creates a new instance of the p2p protocol manager
|
|
func NewManager(cfg *config.Config, dag *blockdag.BlockDAG,
|
|
addressManager *addrmgr.AddrManager, txPool *mempool.TxPool) (*Manager, error) {
|
|
|
|
netAdapter, err := netadapter.NewNetAdapter(cfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
manager := Manager{
|
|
netAdapter: netAdapter,
|
|
dag: dag,
|
|
addressManager: addressManager,
|
|
txPool: txPool,
|
|
sharedRequestedTransactions: relaytransactions.NewSharedRequestedTransactions(),
|
|
}
|
|
netAdapter.SetRouterInitializer(manager.routerInitializer)
|
|
return &manager, nil
|
|
}
|
|
|
|
// Start starts the p2p protocol
|
|
func (m *Manager) Start() error {
|
|
return m.netAdapter.Start()
|
|
}
|
|
|
|
// Stop stops the p2p protocol
|
|
func (m *Manager) Stop() error {
|
|
return m.netAdapter.Stop()
|
|
}
|