bitbucket.org/number571/tendermint@v0.8.14/state/indexer/sink/kv/kv.go (about)

     1  package kv
     2  
     3  import (
     4  	"context"
     5  
     6  	abci "bitbucket.org/number571/tendermint/abci/types"
     7  	"bitbucket.org/number571/tendermint/libs/pubsub/query"
     8  	"bitbucket.org/number571/tendermint/state/indexer"
     9  	kvb "bitbucket.org/number571/tendermint/state/indexer/block/kv"
    10  	kvt "bitbucket.org/number571/tendermint/state/indexer/tx/kv"
    11  	"bitbucket.org/number571/tendermint/types"
    12  	dbm "github.com/tendermint/tm-db"
    13  )
    14  
    15  var _ indexer.EventSink = (*EventSink)(nil)
    16  
    17  // The EventSink is an aggregator for redirecting the call path of the tx/block kvIndexer.
    18  // For the implementation details please see the kv.go in the indexer/block and indexer/tx folder.
    19  type EventSink struct {
    20  	txi *kvt.TxIndex
    21  	bi  *kvb.BlockerIndexer
    22  }
    23  
    24  func NewEventSink(store dbm.DB) indexer.EventSink {
    25  	return &EventSink{
    26  		txi: kvt.NewTxIndex(store),
    27  		bi:  kvb.New(store),
    28  	}
    29  }
    30  
    31  func (kves *EventSink) Type() indexer.EventSinkType {
    32  	return indexer.KV
    33  }
    34  
    35  func (kves *EventSink) IndexBlockEvents(bh types.EventDataNewBlockHeader) error {
    36  	return kves.bi.Index(bh)
    37  }
    38  
    39  func (kves *EventSink) IndexTxEvents(results []*abci.TxResult) error {
    40  	return kves.txi.Index(results)
    41  }
    42  
    43  func (kves *EventSink) SearchBlockEvents(ctx context.Context, q *query.Query) ([]int64, error) {
    44  	return kves.bi.Search(ctx, q)
    45  }
    46  
    47  func (kves *EventSink) SearchTxEvents(ctx context.Context, q *query.Query) ([]*abci.TxResult, error) {
    48  	return kves.txi.Search(ctx, q)
    49  }
    50  
    51  func (kves *EventSink) GetTxByHash(hash []byte) (*abci.TxResult, error) {
    52  	return kves.txi.Get(hash)
    53  }
    54  
    55  func (kves *EventSink) HasBlock(h int64) (bool, error) {
    56  	return kves.bi.Has(h)
    57  }
    58  
    59  func (kves *EventSink) Stop() error {
    60  	return nil
    61  }