view src/main/java/alice/codesegment/OutputDataSegment.java @ 455:b004f62b83e5 dispose

refactor (remove quick method from DataSegmentManager and use flag)
author sugi
date Sun, 02 Nov 2014 18:07:43 +0900
parents aefbe41fcf12
children bcf6f4a6fcd0
line wrap: on
line source

package alice.codesegment;

import alice.datasegment.CommandType;
import alice.datasegment.DataSegment;
import alice.datasegment.Receiver;
import alice.datasegment.SendOption;

public class OutputDataSegment {
    private boolean compressFlag = false;

    /**
     * for local
     */

    public void flip(Receiver receiver) {
        DataSegment.getLocal().put(receiver.key, receiver.getObj(), null);
    }

    public void flip(Receiver receiver, CommandType type) {
        switch (type) {
        case PUT: 
            DataSegment.getLocal().put(receiver.key, receiver.getObj(), null);
            break;
        case UPDATE:
            DataSegment.getLocal().update(receiver.key, receiver.getObj(), null);
            break;
        default:
            break;
        }
    }

    public void put(String key, Object val) {
        DataSegment.getLocal().put(key, val, null);
    }

    public void update(String key, Object val) {
        DataSegment.getLocal().update(key, val, null);
    }

    /**
     * for remote
     */
    public void put(String managerKey, String key, Object val) {
        if (!managerKey.equals("local")){
            SendOption option = new SendOption(false, compressFlag());
            DataSegment.get(managerKey).put(key, val, option);
        } else {
            put(key, val);
        }
    }

    public void quickPut(String managerKey, String key, Object val) {
        if (!managerKey.equals("local")){
            SendOption option = new SendOption(true, compressFlag());
            DataSegment.get(managerKey).put(key, val, option);
        } else {
            put(key, val);
        }
    }

    public void update(String managerKey, String key, Object val) {
        if (!managerKey.equals("local")){
            SendOption option = new SendOption(false, compressFlag());
            DataSegment.get(managerKey).update(key, val, option);
        } else {
            update(key, val);
        }
    }

    public void quickUpdate(String managerKey, String key, Object val) {
        if (!managerKey.equals("local")){
            SendOption option = new SendOption(true, compressFlag());
            DataSegment.get(managerKey).update(key, val, option);
        } else {
            update(key, val);
        }
    }

    /**
     * kill the Alice process after send other messages.
     * 
     * @param managerKey
     */

    public void finish(String managerKey) {
        DataSegment.get(managerKey).finish();
    }

    /**
     * close socket for RemoteDataSegment after send other messages.
     * 
     * @param managerKey
     */

    public void close(String managerKey) {
        DataSegment.get(managerKey).close();
    }

    /**
     * "key" is not remote DataSegment's key.
     * "Ping Response" return in this "key" 
     * 
     * @param managerKey
     * @param key
     */
    public void ping(String managerKey, String returnKey) {
        DataSegment.get(managerKey).ping(returnKey);
    }

    /**
     * this method is to forcibly close socket
     * 
     * @param managerKey
     */

    public void shutdown(String managerKey){
        DataSegment.get(managerKey).shutdown();
    }

    public boolean compressFlag() {
        return compressFlag;
    }

    public void setCompressFlag(boolean cFlag) {
        compressFlag = cFlag;
    }
}