view src/main/java/jp/ac/u_ryukyu/alicevnc/CheckCurrentInfo.java @ 27:14c7bd581cc2

implement change VNC Server protocol
author sugi
date Sat, 08 Nov 2014 15:50:32 +0900
parents
children 71dd46e2d706
line wrap: on
line source

package jp.ac.u_ryukyu.alicevnc;

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 ChangeRequestMessage order;

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

    @Override
    public void run() {
        ChangeRequestMessage current = info.asClass(ChangeRequestMessage.class);

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

            // update current server info
            ods.update("currentServer", order);
        } 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();
    }

}