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 }