/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.runtime.actors.dispatch;
import com.google.j2objc.annotations.Property;
import im.actor.runtime.actors.ActorRef;
import im.actor.runtime.actors.ActorScope;
import im.actor.runtime.actors.ActorTime;
/**
* Actor system envelope
*/
public class Envelope {
@Property("readonly, nonatomic")
private final Object message;
@Property("readonly, nonatomic")
private final ActorRef sender;
@Property("readonly, nonatomic")
private final Mailbox mailbox;
@Property
private final ActorScope scope;
@Property
private final long sendTime;
/**
* Creating of envelope
*
* @param message message
* @param mailbox mailbox
* @param sender sender reference
*/
public Envelope(Object message, ActorScope scope, Mailbox mailbox, ActorRef sender) {
this.scope = scope;
this.message = message;
this.sender = sender;
this.mailbox = mailbox;
this.sendTime = ActorTime.currentTime();
}
public ActorScope getScope() {
return scope;
}
/**
* Message in envelope
*
* @return message
*/
public Object getMessage() {
return message;
}
/**
* Mailbox for envelope
*
* @return mailbox
*/
public Mailbox getMailbox() {
return mailbox;
}
/**
* Sender of message
*
* @return sender reference
*/
public ActorRef getSender() {
return sender;
}
public long getSendTime() {
return sendTime;
}
@Override
public String toString() {
return "{" + message + " -> " + scope.getPath() + "}";
}
}