view src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveMeasurement.java @ 64:66f95be0daab

add zippedSizeData to ReceiveData for AliceVNC measurement
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 19 Nov 2015 03:25:54 +0900
parents 8f60ba0d29ae
children 3d2b82127a3c 29e061701aee
line wrap: on
line source

package jp.ac.u_ryukyu.alicevnc;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import alice.codesegment.CodeSegment;
import alice.daemon.AliceDaemon;
import alice.datasegment.CommandType;
import alice.datasegment.ReceiveData;
import alice.datasegment.Receiver;

public class ReceiveMeasurement extends CodeSegment {

    private Receiver info = ids.create(CommandType.TAKE);
    private Receiver info1 = ids.create(CommandType.PEEK);
    private Receiver info2 = ids.create(CommandType.PEEK);

    public ReceiveMeasurement() {
        info.setKey("measurement");
        info1.setKey("_CLIST");
        info2.setKey("AliceVNCConfig");
    }

    @SuppressWarnings("unchecked")
    @Override
    public void run() {
        long time = System.currentTimeMillis();//ミリ秒
        ArrayList<String> clist = info1.asClass(ArrayList.class);
        boolean route = true;
        for (String node : clist){
            if ("parent".equals(node)) {
                route = false;
                break;
            }
        }

        try {
            if (route) {
                AliceVNCConfig conf = info2.asClass(AliceVNCConfig.class);
                if (conf.getFilePath()!=null) {
                    File file = new File(conf.getFilePath());
                    if (!file.exists()) {
                        file.createNewFile();
                    }
                    FileWriter filewriter = new FileWriter(file, true);
                    BufferedWriter bw = new BufferedWriter(filewriter);
                    PrintWriter pw = new PrintWriter(bw);

                    ReceiveData r = info.getReceiveData();
                    pw.println("depth:" + r.getDepth()/2 + " dataSize:" + r.getZippedDataSize() + " time:" + (time - r.getTime()));//画面データのサイズと現在の接続台数も
                    pw.close();
                }
            } else {
                ReceiveData r = info.getReceiveData();
                ReceiveData rData = new ReceiveData(null);

                rData.setZippedDataSize(r.getZippedDataSize());
                rData.setTimes(r.getTime(), r.getSetTime(), r.getDepth());

                ods.put("parent", info.key, rData);
            }

        } catch (IOException e) {

        }
        this.recycle();
    }

}