Newer
Older
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{
ActionSearchWalletReference aswr = new ActionSearchWalletReference(name);
for(ActorRef neighbor : wallet.getKnownNeighbors().values()){
sleep(self, context, 200);
self.tell(this, self);
}
}
private void sleep(ActorRef self, UntypedActorContext context, int sleeptime) {
try {
context.unwatch(self);
Thread.sleep(sleeptime);
context.watch(self);
} catch (InterruptedException e) {
e.printStackTrace();