Newer
Older
package fucoin.actions.transaction;
import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.actions.search.ActionSearchWalletReference;
Simon Könnecke
committed
import fucoin.wallet.AbstractWallet;
public class ActionInvokeSentMoney extends Transaction {
public final String name;
public final int amount;
public ActionInvokeSentMoney(String name, int amount) {
Simon Könnecke
committed
this.name = name;
Simon Könnecke
committed
@Override
protected void onAction(ActorRef sender, ActorRef self,
UntypedActorContext context, AbstractWallet wallet) {
wallet.log(wallet.getKnownNeighbors() + "");
Simon Könnecke
committed
if (wallet.getKnownNeighbors().containsKey(name)) {
wallet.getRemoteSuperVisorActor().tell(
new ActionInvokeDistributedCommittedTransfer(self, wallet.getKnownNeighbors().get(name), amount), sender);
Simon Könnecke
committed
} else {
ActionSearchWalletReference aswr = new ActionSearchWalletReference(name);
for (ActorRef neighbor : wallet.getKnownNeighbors().values()) {
neighbor.tell(aswr, self);
}
sleep(self, context, 200);
self.tell(this, self);
}
}
private void sleep(ActorRef self, UntypedActorContext context, int timeOfIdle) {
try {
context.unwatch(self);
Thread.sleep(timeOfIdle);
context.watch(self);
} catch (InterruptedException e) {
e.printStackTrace();
}
}