Package com.droidkit.actors

Source Code of com.droidkit.actors.ActorRef

package com.droidkit.actors;

import com.droidkit.actors.mailbox.Envelope;
import com.droidkit.actors.mailbox.Mailbox;

/**
* Reference to Actor that allows to send messages to real Actor
*
* @author Stepan Ex3NDR Korshakov (me@ex3ndr.com)
*/
public class ActorRef {
    private ActorSystem system;
    private Mailbox mailbox;

    /**
     * <p>INTERNAL API</p>
     * Creating actor reference
     *
     * @param system  actor system
     * @param mailbox mailbox
     */
    public ActorRef(ActorSystem system, Mailbox mailbox) {
        this.system = system;
        this.mailbox = mailbox;
    }

    /**
     * Send message with empty sender
     *
     * @param message message
     */
    public void send(Object message) {
        send(message, null);
    }

    /**
     * Send message with specified sender
     *
     * @param message message
     * @param sender  sender
     */
    public void send(Object message, ActorRef sender) {
        send(message, 0, sender);
    }

    /**
     * Send message with empty sender and delay
     *
     * @param message message
     * @param delay   delay
     */
    public void send(Object message, long delay) {
        send(message, delay, null);
    }

    /**
     * Send message
     *
     * @param message message
     * @param delay   delay
     * @param sender  sender
     */
    public void send(Object message, long delay, ActorRef sender) {
        mailbox.schedule(new Envelope(message, mailbox, sender), ActorTime.currentTime() + delay);
    }

    /**
     * Send message once
     *
     * @param message message
     */
    public void sendOnce(Object message) {
        send(message, null);
    }

    /**
     * Send message once
     *
     * @param message message
     * @param sender  sender
     */
    public void sendOnce(Object message, ActorRef sender) {
        sendOnce(message, 0, sender);
    }

    /**
     * Send message once
     *
     * @param message message
     * @param delay   delay
     */
    public void sendOnce(Object message, long delay) {
        sendOnce(message, delay, null);
    }

    /**
     * Send message once
     *
     * @param message message
     * @param delay   delay
     * @param sender  sender
     */
    public void sendOnce(Object message, long delay, ActorRef sender) {
        mailbox.scheduleOnce(new Envelope(message, mailbox, sender), ActorTime.currentTime() + delay);
    }
}
TOP

Related Classes of com.droidkit.actors.ActorRef

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.