view src/main/java/christie/datagear/LocalDataGearManager.java @ 210:9a1d9c99e708

fix Command run to execute
author akahori
date Mon, 11 Mar 2019 16:45:37 +0900
parents 2ecb3a93b8ae
children e486c13d9ea9
line wrap: on
line source

package christie.datagear;

import christie.datagear.command.*;
import christie.datagear.dg.DataGear;

/**
 * Created by e125769 on 12/7/17.
 */
public class LocalDataGearManager extends DataGearManager {

    public void put(String key, Object data) {//main use
        DataGear dg = new DataGear(data);
        put(key, dg);
    }

    public void put(String key, DataGear dg){
        runCommand(new PutCommand(1, "local", key, dg));
    }

    public void runCommand(Command cm){
        switch (cm.type) {
            case PUT:
                dataGears.setData(cm);

                if (waitList.containsKey(cm.key)){
                    runCommand(waitList.getAndRemoveCommand(cm.key));
                }

                break;
            case TAKE:
            case REMOTETAKE:
            case PEEK:
            case REMOTEPEEK:
                if (dataGears.containsKey(cm.key)) {
                    cm.setDg(dataGears.getData(cm));
                    cm.execute();
                } else {
                    waitList.add(cm);
                }
                break;
            case REPLY:
                cm.execute();
                break;

        }
    }

    @Override
    public void resolveWaitCommand(String key, DataGear dg) {

    }

    @Override
    public void finish() {
        System.exit(0);
    }

    @Override
    public void close() {

    }

    @Override
    public void shutdown() {

    }
}