package fucoin.actions.join;

import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.actions.transaction.ActionInvokeDistributedCommittedTransfer;
import fucoin.actions.transaction.SuperVisorAction;
import fucoin.supervisor.SuperVisorImpl;

public class ServerActionJoin extends SuperVisorAction {
    private String name;

    public ServerActionJoin(String name) {
        this.name = name;
    }

    @Override
    protected void onAction(ActorRef sender, ActorRef self,
                            UntypedActorContext context, SuperVisorImpl node) {
        ActionJoinAnswer aja = new ActionJoinAnswer(node.getSelf());
        aja.someNeighbors.putAll(node.getKnownNeighbors());
        sender.tell(aja, self);
        node.addKnownNeighbor(name, sender);
        self.tell(
                new ActionInvokeDistributedCommittedTransfer(self, sender, 100),
                sender);
    }
}