Mercurial > hg > Database > Christie
view src/main/java/christie/datagear/LocalDataGearManager.java @ 126:c6e4d0e4954c
update datagear add shutdown
author | akahori |
---|---|
date | Tue, 18 Dec 2018 15:12:45 +0900 |
parents | d2f1c7e3cf01 |
children | 2ecb3a93b8ae |
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.put(cm.key, cm.dg); if (waitList.containsKey(cm.key)){//ここもsyncronized? runCommand(waitList.getAndRemoveCommand(cm.key)); } break; case TAKE: if (dataGears.containsKey(cm.key)) { takeAndSetData(cm); cm.setInputs(); } else { waitList.add(cm); } break; case REMOTETAKE: if (dataGears.containsKey(cm.key)) { takeAndSetData(cm); runCommand(new ReplyCommand(cm)); } else { waitList.add(cm); } break; case PEEK: if (dataGears.containsKey(cm.key)) { peekAndSetData(cm); cm.setInputs(); } else { waitList.add(cm); } break; case REMOTEPEEK: if (dataGears.containsKey(cm.key)) { peekAndSetData(cm); runCommand(new ReplyCommand(cm)); } else { waitList.add(cm); } break; case REPLY: cm.connection.write(cm); break; } } @Override public void resolveWaitCommand(String key, DataGear dg) { } private void takeAndSetData(Command cm){ cm.setDg(dataGears.take(cm.key)); } private void peekAndSetData(Command cm){ cm.setDg(dataGears.peek(cm.key)); } @Override public void finish() { System.exit(0); } @Override public void close() { } @Override public void shutdown() { } }