package network.thunder.core.communication.objects.messages.impl.blockchainlistener;
import network.thunder.core.communication.objects.messages.interfaces.helper.BlockchainHelper;
import network.thunder.core.communication.objects.messages.interfaces.helper.etc.OnBlockCommand;
import network.thunder.core.communication.objects.messages.interfaces.helper.etc.OnTxCommand;
import org.bitcoinj.core.Sha256Hash;
import org.bitcoinj.core.Transaction;
import java.util.*;
public class MockBlockchainHelper implements BlockchainHelper {
public Set<Sha256Hash> broadcastedTransaction = new HashSet<>();
List<OnBlockCommand> blockListener = Collections.synchronizedList(new ArrayList<>());
List<OnTxCommand> txListener = Collections.synchronizedList(new ArrayList<>());
@Override
public boolean broadcastTransaction (Transaction tx) {
broadcastedTransaction.add(tx.getHash());
//TODO not perfect yet - later we can connect multiple MockBlockchainHelper that will propagate tx across each other
for (OnTxCommand onTxCommand : txListener) {
if (onTxCommand.compare(tx)) {
onTxCommand.execute(tx);
}
}
return true;
}
@Override
public void addTxListener (OnTxCommand executor) {
txListener.add(executor);
}
@Override
public void addBlockListener (OnBlockCommand executor) {
blockListener.add(executor);
}
@Override
public Transaction getTransaction (Sha256Hash hash) {
return null;
}
}