2017-08-24 22:33:51 +02:00
|
|
|
// 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 (
|
2017-11-18 00:51:08 +01:00
|
|
|
"github.com/roasbeef/btcd/blockchain"
|
|
|
|
"github.com/roasbeef/btcd/chaincfg"
|
|
|
|
"github.com/roasbeef/btcd/chaincfg/chainhash"
|
|
|
|
"github.com/roasbeef/btcd/mempool"
|
|
|
|
"github.com/roasbeef/btcd/peer"
|
|
|
|
"github.com/roasbeef/btcd/wire"
|
|
|
|
"github.com/roasbeef/btcutil"
|
2017-08-24 22:33:51 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// 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
|
2017-11-14 05:37:35 +01:00
|
|
|
|
|
|
|
FeeEstimator *mempool.FeeEstimator
|
2017-08-24 22:33:51 +02:00
|
|
|
}
|