Introducing the RedeemHtlcOperation class
This commit is contained in:
parent
6ba8379b92
commit
5350cfb739
1 changed files with 110 additions and 0 deletions
|
@ -0,0 +1,110 @@
|
||||||
|
package cy.agorise.graphenej.operations;
|
||||||
|
|
||||||
|
import com.google.common.primitives.Bytes;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.DataOutput;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import cy.agorise.graphenej.AssetAmount;
|
||||||
|
import cy.agorise.graphenej.BaseOperation;
|
||||||
|
import cy.agorise.graphenej.Htlc;
|
||||||
|
import cy.agorise.graphenej.OperationType;
|
||||||
|
import cy.agorise.graphenej.UserAccount;
|
||||||
|
import cy.agorise.graphenej.Util;
|
||||||
|
import cy.agorise.graphenej.Varint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class used to encapsulate the redeem_htlc operation.
|
||||||
|
*/
|
||||||
|
public class RedeemHtlcOperation extends BaseOperation {
|
||||||
|
static final String KEY_REDEEMER = "redeemer";
|
||||||
|
static final String KEY_PREIMAGE = "preimage";
|
||||||
|
static final String KEY_HTLC_ID = "htlc_id";
|
||||||
|
|
||||||
|
private AssetAmount fee;
|
||||||
|
private UserAccount redeemer;
|
||||||
|
private Htlc htlc;
|
||||||
|
private byte[] preimage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public constructor
|
||||||
|
*
|
||||||
|
* @param fee The fee associated with this operation.
|
||||||
|
* @param redeemer The user account that will redeem the HTLC.
|
||||||
|
* @param htlc The existing HTLC operation.
|
||||||
|
*/
|
||||||
|
public RedeemHtlcOperation(AssetAmount fee, UserAccount redeemer, Htlc htlc, byte[] preimage) {
|
||||||
|
super(OperationType.HTLC_REDEEM_OPERATION);
|
||||||
|
this.fee = fee;
|
||||||
|
this.redeemer = redeemer;
|
||||||
|
this.htlc = htlc;
|
||||||
|
this.preimage = preimage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFee(AssetAmount fee) {
|
||||||
|
this.fee = fee;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AssetAmount getFee(){
|
||||||
|
return this.fee;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserAccount getRedeemer() {
|
||||||
|
return redeemer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRedeemer(UserAccount redeemer) {
|
||||||
|
this.redeemer = redeemer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Htlc getHtlc() {
|
||||||
|
return htlc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHtlc(Htlc htlc) {
|
||||||
|
this.htlc = htlc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] toBytes() {
|
||||||
|
byte[] feeBytes = this.fee.toBytes();
|
||||||
|
byte[] htlcBytes = this.htlc.toBytes();
|
||||||
|
byte[] redeemerBytes = this.redeemer.toBytes();
|
||||||
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
|
DataOutput out = new DataOutputStream(byteArrayOutputStream);
|
||||||
|
try{
|
||||||
|
Varint.writeUnsignedVarLong(this.preimage.length, out);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
byte[] preimageLength = byteArrayOutputStream.toByteArray();
|
||||||
|
return Bytes.concat(feeBytes, htlcBytes, redeemerBytes, preimageLength, this.preimage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonElement toJsonObject() {
|
||||||
|
JsonArray array = new JsonArray();
|
||||||
|
array.add(this.getId());
|
||||||
|
JsonObject jsonObject = new JsonObject();
|
||||||
|
jsonObject.add(KEY_FEE, fee.toJsonObject());
|
||||||
|
jsonObject.add(KEY_REDEEMER, this.redeemer.toJsonObject());
|
||||||
|
jsonObject.addProperty(KEY_PREIMAGE, Util.bytesToHex(this.preimage));
|
||||||
|
jsonObject.addProperty(KEY_HTLC_ID, this.htlc.getObjectId());
|
||||||
|
jsonObject.add(KEY_EXTENSIONS, new JsonArray());
|
||||||
|
array.add(jsonObject);
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toJsonString() {
|
||||||
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
||||||
|
return gsonBuilder.create().toJson(this);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue