package network.thunder.core.communication.objects.messages.impl.factories; import network.thunder.core.communication.objects.lightning.subobjects.ChannelStatus; import network.thunder.core.communication.objects.messages.impl.message.lnpayment.LNPaymentAMessage; import network.thunder.core.communication.objects.messages.impl.message.lnpayment.LNPaymentBMessage; import network.thunder.core.communication.objects.messages.impl.message.lnpayment.LNPaymentCMessage; import network.thunder.core.communication.objects.messages.impl.message.lnpayment.LNPaymentDMessage; import network.thunder.core.communication.objects.messages.interfaces.factories.LNPaymentMessageFactory; import network.thunder.core.database.DBHandler; import network.thunder.core.database.objects.Channel; import org.bitcoinj.crypto.TransactionSignature; import java.util.ArrayList; import java.util.List; /** * Created by matsjerratsch on 08/01/2016. */ public class LNPaymentMessageFactoryImpl extends MesssageFactoryImpl implements LNPaymentMessageFactory { public LNPaymentMessageFactoryImpl (DBHandler dbHandler) { this.dbHandler = dbHandler; } DBHandler dbHandler; @Override public LNPaymentAMessage getMessageA (Channel channel, ChannelStatus statusTemp) { return new LNPaymentAMessage(statusTemp, dbHandler.createRevocationHash(channel)); } @Override public LNPaymentBMessage getMessageB (Channel channel) { return new LNPaymentBMessage(dbHandler.createRevocationHash(channel)); } @Override public LNPaymentCMessage getMessageC (Channel channel, List<TransactionSignature> channelSignatures, List<TransactionSignature> paymentSignatures) { List<byte[]> sigList = new ArrayList<>(); for (TransactionSignature p : paymentSignatures) { sigList.add(p.encodeToBitcoin()); } return new LNPaymentCMessage(channelSignatures.get(0).encodeToBitcoin(), channelSignatures.get(1).encodeToBitcoin(), sigList); } @Override public LNPaymentDMessage getMessageD (Channel channel) { return new LNPaymentDMessage(dbHandler.getOldRevocationHashes(channel)); } }