|
|
- package core
-
- import (
- cfg "github.com/tendermint/go-config"
- "github.com/tendermint/go-crypto"
- "github.com/tendermint/go-p2p"
-
- "github.com/tendermint/tendermint/consensus"
- "github.com/tendermint/tendermint/proxy"
- "github.com/tendermint/tendermint/types"
- abci "github.com/tendermint/abci/types"
- )
-
- //-----------------------------------------------------
- // Interfaces for use by RPC
- // NOTE: these methods must be thread safe!
-
- type BlockStore interface {
- Height() int
- LoadBlockMeta(height int) *types.BlockMeta
- LoadBlock(height int) *types.Block
- }
-
- type Consensus interface {
- GetValidators() (int, []*types.Validator)
- GetRoundState() *consensus.RoundState
- }
-
- type Mempool interface {
- Size() int
- CheckTx(types.Tx, func(*abci.Response)) error
- Reap(int) []types.Tx
- Flush()
- }
-
- type P2P interface {
- Listeners() []p2p.Listener
- Peers() p2p.IPeerSet
- NumPeers() (outbound, inbound, dialig int)
- NodeInfo() *p2p.NodeInfo
- IsListening() bool
- DialSeeds([]string)
- }
-
- var (
- // external, thread safe interfaces
- eventSwitch types.EventSwitch
- proxyAppQuery proxy.AppConnQuery
- config cfg.Config
-
- // interfaces defined above
- blockStore BlockStore
- consensusState Consensus
- mempool Mempool
- p2pSwitch P2P
-
- // objects
- pubKey crypto.PubKey
- genDoc *types.GenesisDoc // cache the genesis structure
- )
-
- func SetConfig(c cfg.Config) {
- config = c
- }
-
- func SetEventSwitch(evsw types.EventSwitch) {
- eventSwitch = evsw
- }
-
- func SetBlockStore(bs BlockStore) {
- blockStore = bs
- }
-
- func SetConsensusState(cs Consensus) {
- consensusState = cs
- }
-
- func SetMempool(mem Mempool) {
- mempool = mem
- }
-
- func SetSwitch(sw P2P) {
- p2pSwitch = sw
- }
-
- func SetPubKey(pk crypto.PubKey) {
- pubKey = pk
- }
-
- func SetGenesisDoc(doc *types.GenesisDoc) {
- genDoc = doc
- }
-
- func SetProxyAppQuery(appConn proxy.AppConnQuery) {
- proxyAppQuery = appConn
- }
|