view src/main/java/jp/ac/u_ryukyu/alicevnc/CheckCurrentInfo.java @ 32:7d65ad341cc9

refactor
author sugi
date Sun, 09 Nov 2014 11:40:40 +0900
parents 556e27a53219
children aace9df1462e
line wrap: on
line source

package jp.ac.u_ryukyu.alicevnc;

import java.util.ArrayList;

import jp.ac.u_ryukyu.alicevnc.AliceVNCMessage.MessageType;
import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;

public class CheckCurrentInfo extends CodeSegment {

    private Receiver info = ids.create(CommandType.TAKE); // current Server Info
    private AliceVNCMessage order;

    public CheckCurrentInfo(AliceVNCMessage order){
        info.setKey("currentServer");
        this.order = order;
    }

    @Override
    public void run() {
        System.out.println("check");
        AliceVNCMessage current = info.asClass(AliceVNCMessage.class);

        if (current.allowChange) {
            // send Stop message to current
            current.messageID = MessageType.StopProxy.getId();
            int last = current.route.size() - 1;
            String address = current.route.get(last);
            current.route.remove(last);
            ods.put(address, "changeRequest", current);

            AliceVNCMessage mes = new AliceVNCMessage(MessageType.StartNegotiate);
            mes.route = new ArrayList<String>();
            for (String s : order.route) {
                mes.route.add(s);
            }
            mes.name = "node0";

            last = mes.route.size() - 1;
            address = mes.route.get(last);
            mes.route.remove(last);
            ods.put(address, "changeRequest", mes);
        } else {
            // not allow to change
            int last = order.route.size() - 1;
            String address = order.route.get(last);
            order.route.remove(last);
            ods.put(address, "changeRequest", order);

            // update current server info
            ods.update("currentServer", current);
        }
        new ReceiveChangeRequest();
    }

}