瀏覽代碼

core/bloombits: AddBloom index parameter and fixes variable names

Zsolt Felfoldi 8 年之前
父節點
當前提交
6ff2c02991
共有 4 個文件被更改,包括 11 次插入8 次删除
  1. 8 5
      core/bloombits/generator.go
  2. 1 1
      core/bloombits/generator_test.go
  3. 1 1
      eth/bloombits.go
  4. 1 1
      eth/filters/bench_test.go

+ 8 - 5
core/bloombits/generator.go

@@ -49,21 +49,24 @@ func NewGenerator(sections uint) (*Generator, error) {
 
 // AddBloom takes a single bloom filter and sets the corresponding bit column
 // in memory accordingly.
-func (b *Generator) AddBloom(bloom types.Bloom) error {
+func (b *Generator) AddBloom(index uint, bloom types.Bloom) error {
 	// Make sure we're not adding more bloom filters than our capacity
 	if b.nextBit >= b.sections {
 		return errSectionOutOfBounds
 	}
+	if b.nextBit != index {
+		return errors.New("bloom filter with unexpected index")
+	}
 	// Rotate the bloom and insert into our collection
-	byteMask := b.nextBit / 8
+	byteIndex := b.nextBit / 8
 	bitMask := byte(1) << byte(7-b.nextBit%8)
 
 	for i := 0; i < types.BloomBitLength; i++ {
-		bloomByteMask := types.BloomByteLength - 1 - i/8
+		bloomByteIndex := types.BloomByteLength - 1 - i/8
 		bloomBitMask := byte(1) << byte(i%8)
 
-		if (bloom[bloomByteMask] & bloomBitMask) != 0 {
-			b.blooms[i][byteMask] |= bitMask
+		if (bloom[bloomByteIndex] & bloomBitMask) != 0 {
+			b.blooms[i][byteIndex] |= bitMask
 		}
 	}
 	b.nextBit++

+ 1 - 1
core/bloombits/generator_test.go

@@ -44,7 +44,7 @@ func TestGenerator(t *testing.T) {
 		t.Fatalf("failed to create bloombit generator: %v", err)
 	}
 	for i, bloom := range input {
-		if err := gen.AddBloom(bloom); err != nil {
+		if err := gen.AddBloom(uint(i), bloom); err != nil {
 			t.Fatalf("bloom %d: failed to add: %v", i, err)
 		}
 	}

+ 1 - 1
eth/bloombits.go

@@ -122,7 +122,7 @@ func (b *BloomIndexer) Reset(section uint64) {
 // Process implements core.ChainIndexerBackend, adding a new header's bloom into
 // the index.
 func (b *BloomIndexer) Process(header *types.Header) {
-	b.gen.AddBloom(header.Bloom)
+	b.gen.AddBloom(uint(header.Number.Uint64()-b.section*b.size), header.Bloom)
 	b.head = header.Hash()
 }
 

+ 1 - 1
eth/filters/bench_test.go

@@ -98,7 +98,7 @@ func benchmarkBloomBits(b *testing.B, sectionSize uint64) {
 			if header == nil {
 				b.Fatalf("Error creating bloomBits data")
 			}
-			bc.AddBloom(header.Bloom)
+			bc.AddBloom(uint(i-sectionIdx*sectionSize), header.Bloom)
 		}
 		sectionHead := core.GetCanonicalHash(db, (sectionIdx+1)*sectionSize-1)
 		for i := 0; i < types.BloomBitLength; i++ {