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 }