-
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.
ActionInvokeDistributedCommitedTransfer.java 1.23 KiB
package fucoin.actions.transaction;
import java.util.HashMap;
import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.Wallet;
import fucoin.supervisor.DistributedCommitedTransferRequest;
import fucoin.supervisor.SuperVisor;
public class ActionInvokeDistributedCommitedTransfer extends CoordinatorTransaction{
private ActorRef source;
private ActorRef target;
private int amount;
public ActionInvokeDistributedCommitedTransfer(ActorRef source,
ActorRef target, int amount) {
this.source=source;
this.target=target;
this.amount=amount;
}
@Override
protected void onAction(ActorRef sender, ActorRef self,
UntypedActorContext context, SuperVisor superVisor) {
log("invoke transaction "+source.path().name()+" sends "+amount+" to "+target.path().name());
long timeout = System.currentTimeMillis()+500;
DistributedCommitedTransferRequest ds = new DistributedCommitedTransferRequest(source,target,timeout);
superVisor.addDistributedCommitedTransferRequest(ds);
ActionPrepareDistributedCommitedTransfer apdct = new ActionPrepareDistributedCommitedTransfer(source,target,amount,timeout,ds.getId());
for(ActorRef neighbor : superVisor.getKnownNeighbors().values()){
neighbor.tell(apdct, self);
}
}
}