Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DistributedCommittedTransferRequest.java 1.44 KiB
package fucoin.supervisor;

import akka.actor.ActorRef;
import akka.actor.UntypedActorContext;
import fucoin.actions.transaction.Transaction;
import fucoin.wallet.AbstractWallet;

import java.util.LinkedList;
import java.util.List;
import java.util.Random;

public class DistributedCommittedTransferRequest extends Transaction {
    private final static Random random = new Random(System.currentTimeMillis() + System.nanoTime());
    private ActorRef source;
    private ActorRef target;
    private long timeout;
    private long id;
    private List<ActorRef> answers = new LinkedList<>();

    public DistributedCommittedTransferRequest(ActorRef source, ActorRef target,
                                               long timeout) {
        this.source = source;
        this.target = target;
        this.timeout = timeout;
        this.id = random.nextLong();
    }

    @Override
    protected void onAction(ActorRef sender, ActorRef self,
                            UntypedActorContext context, AbstractWallet wallet) {

    }

    public ActorRef getSource() {
        return source;
    }

    public ActorRef getTarget() {
        return target;
    }

    public long getTimeout() {
        return timeout;
    }

    public int addPositiveAnswer(ActorRef sender) {
        answers.add(sender);
        return answers.size();
    }

    public List<ActorRef> getAnswers() {
        return answers;
    }

    public long getId() {
        return id;
    }
}