view src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveMeasurement.java @ 41:1cb529b46876

change measurement method
author sugi
date Tue, 09 Dec 2014 15:24:54 +0900
parents 47d6f7a76b86
children fecac17d662a
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.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(r.depth/2+" "+(time - r.time)+" "+((byte[])info.getObj()).length);
                    pw.close();
                }
            } else {
                ods.put("parent", info.key, info.getReceiveData());
            }

        } catch (IOException e) {

        }
        this.recycle();
    }

}