+++ /dev/null
-// Copyright (c) 2016 The btcsuite developers
-// Use of this source code is governed by an ISC
-// license that can be found in the LICENSE file.
-
-/*
-Package indexers implements optional block chain indexes.
-*/
-package indexers
-
-import (
- "encoding/binary"
-
- "github.com/btcsuite/btcd/blockchain"
- "github.com/btcsuite/btcd/database"
- "github.com/btcsuite/btcutil"
-)
-
-var (
- // byteOrder is the preferred byte order used for serializing numeric
- // fields for storage in the database.
- byteOrder = binary.LittleEndian
-)
-
-// NeedsInputser provides a generic interface for an indexer to specify the it
-// requires the ability to look up inputs for a transaction.
-type NeedsInputser interface {
- NeedsInputs() bool
-}
-
-// Indexer provides a generic interface for an indexer that is managed by an
-// index manager such as the Manager type provided by this package.
-type Indexer interface {
- // Key returns the key of the index as a byte slice.
- Key() []byte
-
- // Name returns the human-readable name of the index.
- Name() string
-
- // Create is invoked when the indexer manager determines the index needs
- // to be created for the first time.
- Create(dbTx database.Tx) error
-
- // Init is invoked when the index manager is first initializing the
- // index. This differs from the Create method in that it is called on
- // every load, including the case the index was just created.
- Init() error
-
- // ConnectBlock is invoked when the index manager is notified that a new
- // block has been connected to the main chain.
- ConnectBlock(dbTx database.Tx, block *btcutil.Block, view *blockchain.UtxoViewpoint) error
-
- // DisconnectBlock is invoked when the index manager is notified that a
- // block has been disconnected from the main chain.
- DisconnectBlock(dbTx database.Tx, block *btcutil.Block, view *blockchain.UtxoViewpoint) error
-}
-
-// AssertError identifies an error that indicates an internal code consistency
-// issue and should be treated as a critical and unrecoverable error.
-type AssertError string
-
-// Error returns the assertion error as a huma-readable string and satisfies
-// the error interface.
-func (e AssertError) Error() string {
- return "assertion failed: " + string(e)
-}
-
-// errDeserialize signifies that a problem was encountered when deserializing
-// data.
-type errDeserialize string
-
-// Error implements the error interface.
-func (e errDeserialize) Error() string {
- return string(e)
-}
-
-// isDeserializeErr returns whether or not the passed error is an errDeserialize
-// error.
-func isDeserializeErr(err error) bool {
- _, ok := err.(errDeserialize)
- return ok
-}
-
-// internalBucket is an abstraction over a database bucket. It is used to make
-// the code easier to test since it allows mock objects in the tests to only
-// implement these functions instead of everything a database.Bucket supports.
-type internalBucket interface {
- Get(key []byte) []byte
- Put(key []byte, value []byte) error
- Delete(key []byte) error
-}