Skip to content
Snippets Groups Projects
ActionInvokeSentMoney.java 1.19 KiB
Newer Older
Michael Kmoch's avatar
Michael Kmoch committed
package fucoin.actions.transaction;


import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.Wallet;
import fucoin.actions.search.ActionSearchWalletReference;

public class ActionInvokeSentMoney extends Transaction{
	public final String name;
	public final int amount;
    public ActionInvokeSentMoney(String name, int amount) {
    	this.name=name;
        this.amount = amount;
    }
	@Override
	protected void onAction(ActorRef sender, ActorRef self,
			UntypedActorContext context, Wallet wallet) {
		log(wallet.getKnownNeighbors()+"");
		if(wallet.getKnownNeighbors().containsKey(name)){
			wallet.getRemoteSuperVisorActor().tell(
					new ActionInvokeDistributedCommitedTransfer(self,wallet.getKnownNeighbors().get(name),amount), sender);
		}else{
			for(ActorRef neighbor : wallet.getKnownNeighbors().values()){
				neighbor.tell(new ActionSearchWalletReference(name), self);
			}
			
			try {
				context.unwatch(self);
				Thread.sleep(200);
				context.watch(self);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//getContext().unwatch(getSelf());
			self.tell(new ActionInvokeSentMoney(name, amount), self);
			
		}
	}
}