view src/main/java/jp/ac/u_ryukyu/alicevnc/SendChangeRequest.java @ 53:9325819b2853

back version Alice tag:work-compressedDSM
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 12 Nov 2015 17:25:28 +0900
parents 57ca704f86a3
children fe627049e289 4a8755a30aa8
line wrap: on
line source

package jp.ac.u_ryukyu.alicevnc;

import java.util.ArrayList;
import java.util.List;

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

public class SendChangeRequest extends CodeSegment {

    private Receiver info = ids.create(CommandType.PEEK);  // hostName
    private Receiver info1 = ids.create(CommandType.PEEK); // connection list
    private Receiver info2 = ids.create(CommandType.PEEK); // AliceVNCConfig
    private Receiver info3 = ids.create(CommandType.TAKE); // request

    public SendChangeRequest(){
        info.setKey("host");
        info1.setKey("_CLIST");
        info2.setKey("AliceVNCConfig");
        info3.setKey("Request");
    }

    @Override
    public void run() {
        AliceVNCConfig config = info2.asClass(AliceVNCConfig.class);
        String hostname = info.asString();

        @SuppressWarnings("unchecked")
        List<String> clist = info1.asClass(List.class);

        AliceVNCMessage mes = new AliceVNCMessage(MessageType.ChangeRequest);
        mes.allowChange = config.getAllowChange();
        mes.route = new ArrayList<String>();
        mes.name = hostname;

        String address = "local";
        if (clist.contains("parent")){ // this node is not root. compare node0 is better?
            address = "parent";
        }

        ods.put(address, "AliceVNCMessage", mes);
        new SendChangeRequest();
    }

}