40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
|
// Copyright (c) 2017 The btcsuite developers
|
||
|
// Use of this source code is governed by an ISC
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package netsync
|
||
|
|
||
|
import (
|
||
|
"github.com/btcsuite/btcd/blockchain"
|
||
|
"github.com/btcsuite/btcd/chaincfg"
|
||
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||
|
"github.com/btcsuite/btcd/mempool"
|
||
|
"github.com/btcsuite/btcd/peer"
|
||
|
"github.com/btcsuite/btcd/wire"
|
||
|
"github.com/btcsuite/btcutil"
|
||
|
)
|
||
|
|
||
|
// PeerNotifier exposes methods to notify peers of status changes to
|
||
|
// transactions, blocks, etc. Currently server (in the main package) implements
|
||
|
// this interface.
|
||
|
type PeerNotifier interface {
|
||
|
AnnounceNewTransactions(newTxs []*mempool.TxDesc)
|
||
|
|
||
|
UpdatePeerHeights(latestBlkHash *chainhash.Hash, latestHeight int32, updateSource *peer.Peer)
|
||
|
|
||
|
RelayInventory(invVect *wire.InvVect, data interface{})
|
||
|
|
||
|
TransactionConfirmed(tx *btcutil.Tx)
|
||
|
}
|
||
|
|
||
|
// Config is a configuration struct used to initialize a new SyncManager.
|
||
|
type Config struct {
|
||
|
PeerNotifier PeerNotifier
|
||
|
Chain *blockchain.BlockChain
|
||
|
TxMemPool *mempool.TxPool
|
||
|
ChainParams *chaincfg.Params
|
||
|
|
||
|
DisableCheckpoints bool
|
||
|
MaxPeers int
|
||
|
}
|