Added block cache delete method
This commit is contained in:
		
							parent
							
								
									0d1a9ce648
								
							
						
					
					
						commit
						29f120206e
					
				| @ -56,6 +56,23 @@ func (bc *BlockCache) Push(block *types.Block) { | ||||
| 	bc.hashes[len(bc.hashes)-1] = hash | ||||
| } | ||||
| 
 | ||||
| func (bc *BlockCache) Delete(hash common.Hash) { | ||||
| 	bc.mu.Lock() | ||||
| 	defer bc.mu.Unlock() | ||||
| 
 | ||||
| 	if _, ok := bc.blocks[hash]; ok { | ||||
| 		delete(bc.blocks, hash) | ||||
| 		for i, h := range bc.hashes { | ||||
| 			if hash == h { | ||||
| 				bc.hashes = bc.hashes[:i+copy(bc.hashes[i:], bc.hashes[i+1:])] | ||||
| 				// or ? => bc.hashes = append(bc.hashes[:i], bc.hashes[i+1]...)
 | ||||
| 
 | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (bc *BlockCache) Get(hash common.Hash) *types.Block { | ||||
| 	bc.mu.RLock() | ||||
| 	defer bc.mu.RUnlock() | ||||
|  | ||||
| @ -46,3 +46,15 @@ func TestInclusion(t *testing.T) { | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestDeletion(t *testing.T) { | ||||
| 	chain := newChain(3) | ||||
| 	cache := NewBlockCache(3) | ||||
| 	insertChainCache(cache, chain) | ||||
| 
 | ||||
| 	cache.Delete(chain[1].Hash()) | ||||
| 
 | ||||
| 	if cache.Has(chain[1].Hash()) { | ||||
| 		t.Errorf("expected %x not to be included") | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user