|
|
|
@ -59,7 +59,7 @@ type partialMatches struct { |
|
|
|
|
// It can also have the actual results set to be used as a delivery data struct.
|
|
|
|
|
//
|
|
|
|
|
// The contest and error fields are used by the light client to terminate matching
|
|
|
|
|
// early if an error is enountered on some path of the pipeline.
|
|
|
|
|
// early if an error is encountered on some path of the pipeline.
|
|
|
|
|
type Retrieval struct { |
|
|
|
|
Bit uint |
|
|
|
|
Sections []uint64 |
|
|
|
@ -218,7 +218,7 @@ func (m *Matcher) Start(ctx context.Context, begin, end uint64, results chan uin |
|
|
|
|
// run creates a daisy-chain of sub-matchers, one for the address set and one
|
|
|
|
|
// for each topic set, each sub-matcher receiving a section only if the previous
|
|
|
|
|
// ones have all found a potential match in one of the blocks of the section,
|
|
|
|
|
// then binary AND-ing its own matches and forwaring the result to the next one.
|
|
|
|
|
// then binary AND-ing its own matches and forwarding the result to the next one.
|
|
|
|
|
//
|
|
|
|
|
// The method starts feeding the section indexes into the first sub-matcher on a
|
|
|
|
|
// new goroutine and returns a sink channel receiving the results.
|
|
|
|
@ -543,7 +543,7 @@ func (s *MatcherSession) Error() error { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// AllocateRetrieval assigns a bloom bit index to a client process that can either
|
|
|
|
|
// immediately reuest and fetch the section contents assigned to this bit or wait
|
|
|
|
|
// immediately request and fetch the section contents assigned to this bit or wait
|
|
|
|
|
// a little while for more sections to be requested.
|
|
|
|
|
func (s *MatcherSession) AllocateRetrieval() (uint, bool) { |
|
|
|
|
fetcher := make(chan uint) |
|
|
|
@ -599,8 +599,8 @@ func (s *MatcherSession) DeliverSections(bit uint, sections []uint64, bitsets [] |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Multiplex polls the matcher session for rerieval tasks and multiplexes it into
|
|
|
|
|
// the reuested retrieval queue to be serviced together with other sessions.
|
|
|
|
|
// 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
|
|
|
|
|