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