Documentation ¶
Overview ¶
Package bloombits implements bloom filtering on batches of data.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Generator ¶
type Generator struct {
// contains filtered or unexported fields
}
Generator takes a number of bloom filters and generates the rotated bloom bits to be used for batched filtering.
func NewGenerator ¶
NewGenerator creates a rotated bloom generator that can iteratively fill a batched bloom filter's bits.
type Matcher ¶
type Matcher struct {
// contains filtered or unexported fields
}
Matcher is a pipelined system of schedulers and logic matchers which perform binary AND/OR operations on the bit-streams, creating a stream of potential blocks to inspect for data content.
func NewMatcher ¶
NewMatcher creates a new pipeline for retrieving bloom bit streams and doing address and topic filtering on them. Setting a filter component to `nil` is allowed and will result in that filter rule being skipped (OR 0x11...1).
func (*Matcher) Start ¶
func (m *Matcher) Start(ctx context.Context, begin, end uint64, results chan uint64) (*MatcherSession, error)
Start starts the matching process and returns a stream of bloom matches in a given range of blocks. If there are no more matches in the range, the result channel is closed.
type MatcherSession ¶
type MatcherSession struct {
// contains filtered or unexported fields
}
MatcherSession is returned by a started matcher to be used as a terminator for the actively running matching operation.
func (*MatcherSession) Close ¶
func (s *MatcherSession) Close()
Close stops the matching process and waits for all subprocesses to terminate before returning. The timeout may be used for graceful shutdown, allowing the currently running retrievals to complete before this time.
func (*MatcherSession) Error ¶
func (s *MatcherSession) Error() error
Error returns any failure encountered during the matching session.
func (*MatcherSession) Multiplex ¶
func (s *MatcherSession) Multiplex(batch int, wait time.Duration, mux chan chan *Retrieval)
Multiplex polls the matcher session for retrieval tasks and multiplexes it into the requested retrieval queue to be serviced together with other sessions.
This method will block for the lifetime of the session. Even after termination of the session, any request in-flight need to be responded to! Empty responses are fine though in that case.
type Retrieval ¶
type Retrieval struct { Bit uint Sections []uint64 Bitsets [][]byte Context context.Context Error error }
Retrieval represents a request for retrieval task assignments for a given bit with the given number of fetch elements, or a response for such a request. It can also have the actual results set to be used as a delivery data struct.
The context and error fields are used by the light client to terminate matching early if an error is encountered on some path of the pipeline.