Coverage Summary for Class: BlockCache (co.rsk.net)

Class Class, % Method, % Line, %
BlockCache 100% (1/1) 75% (3/4) 75% (6/8)


1 /* 2  * This file is part of RskJ 3  * Copyright (C) 2017 RSK Labs Ltd. 4  * (derived from ethereumJ library, Copyright (c) 2016 <ether.camp>) 5  * 6  * This program is free software: you can redistribute it and/or modify 7  * it under the terms of the GNU Lesser General Public License as published by 8  * the Free Software Foundation, either version 3 of the License, or 9  * (at your option) any later version. 10  * 11  * This program is distributed in the hope that it will be useful, 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14  * GNU Lesser General Public License for more details. 15  * 16  * You should have received a copy of the GNU Lesser General Public License 17  * along with this program. If not, see <http://www.gnu.org/licenses/>. 18  */ 19  20 package co.rsk.net; 21  22 import co.rsk.crypto.Keccak256; 23 import co.rsk.util.MaxSizeHashMap; 24 import org.ethereum.core.Block; 25  26 import java.util.Map; 27  28 /** 29  * Created by ajlopez on 17/06/2017. 30  */ 31 public class BlockCache { 32  private final Map<Keccak256, Block> blockMap; 33  34  public BlockCache(int cacheSize) { 35  this.blockMap = new MaxSizeHashMap<>(cacheSize, true); 36  } 37  38  public void removeBlock(Block block) { 39  blockMap.remove(block.getHash()); 40  } 41  42  public void addBlock(Block block) { 43  blockMap.put(block.getHash(), block); 44  } 45  46  public Block getBlockByHash(byte[] hash) { 47  return blockMap.get(new Keccak256(hash)); 48  } 49 }