-
Michael Kmoch authored
added paper v0.5 will be updated
Michael Kmoch authoredadded paper v0.5 will be updated
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ActionCommitDistributedCommitedTransfer.java 1.71 KiB
package fucoin.actions.transaction;
import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.Wallet;
import fucoin.actions.ClientAction;
import fucoin.supervisor.DistributedCommitedTransferRequest;
public class ActionCommitDistributedCommitedTransfer extends ClientAction{
private ActorRef source;
private ActorRef target;
private int amount;
private boolean granted;
private long timestamp;
private long id;
public ActionCommitDistributedCommitedTransfer(ActorRef source,
ActorRef target, int amount, boolean granted, long timestamp, long id) {
this.source=source;
this.target=target;
this.amount=amount;
this.granted=granted;
this.timestamp=timestamp;
this.id=id;
}
public ActionCommitDistributedCommitedTransfer(
DistributedCommitedTransferRequest outdatedRequest) {
this.source=outdatedRequest.getSource();
this.target=outdatedRequest.getTarget();
this.amount=0;
this.granted=false;
this.timestamp=outdatedRequest.getTimeout();
this.id=outdatedRequest.getId();
}
@Override
protected void onAction(ActorRef sender, ActorRef self,
UntypedActorContext context, Wallet wallet) {
log("ActionCommitDistributedCommitedTransfer is granted?"+granted);
if(granted){
Integer sourceAmount = wallet.amounts.getOrDefault(source,0);
Integer targetAmount = wallet.amounts.getOrDefault(target,0);
wallet.amounts.put(source,sourceAmount-amount);
wallet.amounts.put(target,targetAmount+amount);
if(source.compareTo(self)==0)wallet.amount-=amount;
else if(target.compareTo(self)==0)wallet.amount+=amount;
wallet.log("have now "+wallet.amounts.get(self)+" Fucoins");
}else{
log("abort transaction with id"+id);
}
log("wallet.amounts:"+wallet.amounts);
}
}