Package net.ex337.scriptus.model.api.functions

Source Code of net.ex337.scriptus.model.api.functions.Ask

package net.ex337.scriptus.model.api.functions;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Locale;

import net.ex337.scriptus.ScriptusFacade;
import net.ex337.scriptus.model.MessageCorrelation;
import net.ex337.scriptus.model.ScriptAction;
import net.ex337.scriptus.model.ScriptProcess;
import net.ex337.scriptus.model.api.HasStateLabel;
import net.ex337.scriptus.model.api.HasTimeout;
import net.ex337.scriptus.model.scheduler.Wake;

public class Ask extends ScriptAction implements Serializable, HasTimeout, HasStateLabel {

  private static final long serialVersionUID = 41890027788062200L;

  private String msg;
  private String who;
  private Calendar timeout;
  private long nonce;

  public Ask(String msg, String who, Calendar timeout, long nonce){
    this.msg = msg;
    this.who = who;
    this.timeout = timeout;
    this.nonce = nonce;
  }
  public String getMsg() {
    return msg;
  }
 
  public String getWho() {
    return who;
  }
 
  public Calendar getTimeout() {
    return timeout;
  }

 
  @Override
  public long getNonce() {
    return nonce;
  }

  public String toString() {
    return msg;
  }
 
 
  @Override
  public void visit(final ScriptusFacade scriptus, final ScriptProcess process) {

    scriptus.updateProcessState(process.getPid(), this);

    scriptus.scheduleTask(new Wake(process.getPid(), nonce, timeout.getTimeInMillis()));

    String messageId = scriptus.send(process.getUserId(), process.getTransport(), getWho(), getMsg());
   
        scriptus.registerMessageCorrelation(new MessageCorrelation(process.getPid(), getWho(), messageId, System.currentTimeMillis(), process.getTransport(), process.getUserId()));
   
  }
    @Override
    public String getStateLabel(Locale locale) {
        return "Asking "+getMsg()+ (getWho() == null ? "" : " to "+getWho());
    }

}
TOP

Related Classes of net.ex337.scriptus.model.api.functions.Ask

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.