Skip to content

Commit

Permalink
Fallback to DHT in block.get if no peers are provided
Browse files Browse the repository at this point in the history
  • Loading branch information
ianopolous committed Jul 11, 2023
1 parent 15b8ff5 commit 325d3fb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
11 changes: 10 additions & 1 deletion src/main/java/org/peergos/BitswapBlockService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import io.ipfs.cid.*;
import io.libp2p.core.*;
import org.peergos.protocol.bitswap.*;
import org.peergos.protocol.dht.*;

import java.util.*;
import java.util.stream.*;
Expand All @@ -11,14 +12,22 @@ public class BitswapBlockService implements BlockService {

private final Host us;
private final Bitswap bitswap;
private final Kademlia dht;

public BitswapBlockService(Host us, Bitswap bitswap) {
public BitswapBlockService(Host us, Bitswap bitswap, Kademlia dht) {
this.us = us;
this.bitswap = bitswap;
this.dht = dht;
}

@Override
public List<HashedBlock> get(List<Want> hashes, Set<PeerId> peers, boolean addToBlockstore) {
if (peers.isEmpty()) {
List<PeerAddresses> providers = dht.findProviders(hashes.get(0).cid, us, 5).join();
peers = providers.stream()
.map(p -> PeerId.fromBase58(p.peerId.toBase58()))
.collect(Collectors.toSet());
}
return bitswap.get(hashes, us, peers, addToBlockstore)
.stream()
.map(f -> f.join())
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/peergos/EmbeddedIpfs.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public EmbeddedIpfs(Host node,
this.bitswap = bitswap;
this.p2pHttp = p2pHttp;
this.bootstrap = bootstrap;
this.blocks = new BitswapBlockService(node, bitswap);
this.blocks = new BitswapBlockService(node, bitswap, dht);
}

public List<HashedBlock> getBlocks(List<Want> wants, Set<PeerId> peers, boolean addToLocal) {
Expand Down

0 comments on commit 325d3fb

Please sign in to comment.