Coverage Summary for Class: DownloadingBackwardsHeadersSyncState (co.rsk.net.sync)

Class Class, % Method, % Line, %
DownloadingBackwardsHeadersSyncState 0% (0/1) 0% (0/4) 0% (0/14)


1 package co.rsk.net.sync; 2  3 import co.rsk.crypto.Keccak256; 4 import co.rsk.net.Peer; 5 import co.rsk.scoring.EventType; 6 import org.ethereum.core.Block; 7 import org.ethereum.core.BlockHeader; 8 import org.ethereum.db.BlockStore; 9  10 import java.util.*; 11 import java.util.stream.Collectors; 12  13 /** 14  * Retrieves the oldest block in the storage and requests the headers that come before. 15  */ 16 public class DownloadingBackwardsHeadersSyncState extends BaseSyncState { 17  18  private final Block child; 19  private final Peer selectedPeer; 20  21  public DownloadingBackwardsHeadersSyncState( 22  SyncConfiguration syncConfiguration, 23  SyncEventsHandler syncEventsHandler, 24  BlockStore blockStore, 25  Peer peer) { 26  super(syncEventsHandler, syncConfiguration); 27  this.selectedPeer = peer; 28  this.child = blockStore.getChainBlockByNumber(blockStore.getMinNumber()); 29  } 30  31  @Override 32  public void newBlockHeaders(List<BlockHeader> toRequest) { 33  syncEventsHandler.backwardDownloadBodies( 34  child, toRequest.stream().skip(1).collect(Collectors.toList()), selectedPeer 35  ); 36  } 37  38  @Override 39  public void onEnter() { 40  Keccak256 hashToRequest = child.getHash(); 41  ChunkDescriptor chunkDescriptor = new ChunkDescriptor( 42  hashToRequest.getBytes(), 43  syncConfiguration.getChunkSize()); 44  45  syncEventsHandler.sendBlockHeadersRequest(selectedPeer, chunkDescriptor); 46  } 47  48  @Override 49  protected void onMessageTimeOut() { 50  syncEventsHandler.onErrorSyncing( 51  selectedPeer.getPeerNodeID(), 52  "Timeout waiting requests {}", 53  EventType.TIMEOUT_MESSAGE, 54  this.getClass(), 55  selectedPeer.getPeerNodeID()); 56  } 57 }