edu.stanford.junction.simulator.ResponseTimeSimulator.java Source code

Java tutorial

Introduction

Here is the source code for edu.stanford.junction.simulator.ResponseTimeSimulator.java

Source

/*
 * Copyright (C) 2010 Stanford University
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package edu.stanford.junction.simulator;

import java.util.Date;

import org.json.JSONException;
import org.json.JSONObject;

import edu.stanford.junction.JunctionMaker;
import edu.stanford.junction.JunctionException;
import edu.stanford.junction.api.activity.ActivityScript;
import edu.stanford.junction.api.activity.JunctionActor;
import edu.stanford.junction.api.messaging.MessageHeader;
import edu.stanford.junction.provider.xmpp.XMPPSwitchboardConfig;

/*class simThread extends Thread{
  private int NumOfMessage;
  private int NumOfParticipant;
  private int sessionID;
  simThread(int NumMsg, int NumP, int id){
  NumOfMessage = NumMsg;
  NumOfParticipant = NumP;
  sessionID = id;
  }
  public void run(){
  ActivityDescription desc = new ActivityDescription();
  //String ad = "SimSession_" + sessionID;
  //desc.setSessionID(ad);
  JSONObject platform = new JSONObject();
  try{
  platform.put("android", "http://my.realsitic.url/for_android");
  desc.addRolePlatform("simulator", "android", platform);
  } catch (Exception e) {}
  JunctionMaker maker = JunctionMaker.getInstance("prpl.stanford.edu");
  for(int actor_i = NumOfParticipant-1 ; actor_i >=0; actor_i --){
  maker.newJunction(desc, new SimActor(NumOfMessage, actor_i));
  //maker.newJunction(desc, new SimActor(NumOfMessage, 0));
  }
  }
  }*/

public class ResponseTimeSimulator {
    static int NumOfActivity = 1;
    static int NumOfMessage = 5;
    static int NumOfParticipant = 2;

    public static void main(String[] argv) {
        ActivityScript desc = new ActivityScript();
        JSONObject platform = new JSONObject();
        try {
            platform.put("android", "http://my.realsitic.url/for_android");
            desc.addRolePlatform("simulator", "android", platform);
        } catch (Exception e) {
        }
        Date makeJuncTime = new Date();

        XMPPSwitchboardConfig config = new XMPPSwitchboardConfig("prpl.stanford.edu");
        JunctionMaker maker = JunctionMaker.getInstance(config);
        for (int actor_i = NumOfParticipant - 1; actor_i >= 0; actor_i--) {
            try {
                maker.newJunction(desc, new SimActorRT(makeJuncTime.getTime(), actor_i));
            } catch (JunctionException e) {
                e.printStackTrace(System.err);
            }
        }

        while (true) {
            try {
                Thread.sleep(500000);
            } catch (Exception e) {
            }
        }
    }
}

class SimActorRT extends JunctionActor {
    private int ID;
    private String JunctionTimestamp;

    public SimActorRT(long _JunctionTimestamp, int _ID) {
        super("SimActorRT" + _ID);
        ID = _ID;
        JunctionTimestamp = Long.valueOf(_JunctionTimestamp).toString();
    }

    @Override
    public void onActivityStart() {

    }

    @Override
    public void onActivityJoin() {
        if (ID == 0) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            JSONObject simMsg = new JSONObject();
            try {
                simMsg.put("service", "simulation");
                simMsg.put("switchboard", "prpl.stanford.edu");
                simMsg.put("session", this.getJunction().getSessionID());
                simMsg.put("JunctionTimestamp", JunctionTimestamp.toString());
                Date makeMsgTime = new Date();
                simMsg.put("MessageTimestamp", Long.valueOf(makeMsgTime.getTime()).toString());

            } catch (JSONException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            //this.getJunction().sendMessageToRole("SimActorRT1", simMsg);
            this.getJunction().sendMessageToSession(simMsg);
        }
    }

    public void onMessageReceived(MessageHeader arg0, JSONObject arg1) {
        Date recvTime = new Date();
        long juncResponseTime;
        long msgResponseTime;
        long juncToMsgSendingTime;
        try {
            juncResponseTime = recvTime.getTime()
                    - Long.valueOf(arg1.get("JunctionTimestamp").toString()).longValue();
            msgResponseTime = recvTime.getTime()
                    - Long.valueOf(arg1.get("MessageTimestamp").toString()).longValue();
            juncToMsgSendingTime = Long.valueOf(arg1.get("MessageTimestamp").toString()).longValue()
                    - Long.valueOf(arg1.get("JunctionTimestamp").toString()).longValue();
            System.out.println(ID + ": From Make Junction to Send First Message: " + juncToMsgSendingTime);
            System.out.println(ID + ": From Make Junction to Receive First Message: " + juncResponseTime);
            System.out.println(ID + ": From Send to Receive First Message: " + msgResponseTime);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}