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()+" "+amount+" "+target.path().name()); long timestamp = System.currentTimeMillis()+500; DistributedCommitedTransferRequest ds = new DistributedCommitedTransferRequest(source,target,timestamp); superVisor.addDistributedCommitedTransferRequest(ds); for(ActorRef neighbor : superVisor.getKnownNeighbors().values()){ neighbor.tell(new ActionPrepareDistributedCommitedTransfer(source,target,amount,timestamp,ds.getId()), self); } } }