Skip to content
Snippets Groups Projects
ActionUpdateQueue.java 1.08 KiB
package fucoin.supervisor;

import java.util.List;

import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.actions.transaction.ActionCommitDistributedCommitedTransfer;
import fucoin.actions.transaction.SuperVisorAction;

public class ActionUpdateQueue extends SuperVisorAction{

	@Override
	protected void onAction(ActorRef sender, ActorRef self,
			UntypedActorContext context, SuperVisorImpl superVisor) {
		
		List<DistributedCommitedTransferRequest> deletes = superVisor.updateList();
		
		for(DistributedCommitedTransferRequest outdatedRequest : deletes){
			ActionCommitDistributedCommitedTransfer acdct = new ActionCommitDistributedCommitedTransfer(outdatedRequest);
			for(ActorRef neighbor : superVisor.getKnownNeighbors().values()){
				neighbor.tell(acdct, self);
			}
		}
		sleep(self,context,1000);
		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();
		}
	}

}