Mercurial > hg > Database > Alice
view src/main/java/alice/codesegment/OutputDataSegment.java @ 546:15eeb439830c dispose
setAliceDaemon in setKey
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 Aug 2015 19:39:47 +0900 |
parents | bd245df5cba3 |
children | b44a2bf16eb3 |
line wrap: on
line source
package alice.codesegment; import alice.daemon.AliceDaemon; import alice.datasegment.CommandType; import alice.datasegment.DataSegment; import alice.datasegment.ReceiveData; import alice.datasegment.Receiver; import alice.datasegment.SendOption; public class OutputDataSegment { private CodeSegment cs; private AliceDaemon alice; public void setAliceDaemon(CodeSegment cs){ this.cs = cs; this.alice = cs.getAliceDaemon(); } /** * for local */ /** * input→ds変更→outputのときコピーを防ぐ */ public void flip(Receiver receiver) { if (receiver.isCompressed()){ alice.dataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false); } else { alice.dataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false); } } public void flip(String managerKey, String key, Receiver receiver){ if (receiver.isCompressed()){ alice.dataSegment.get("compressed" + managerKey).put(key, receiver.getReceiveData(), false); } else { alice.dataSegment.get(managerKey).put(key, receiver.getReceiveData(), false); } } public void flip(Receiver receiver, CommandType type) { switch (type) { case PUT: if (receiver.isCompressed()){ alice.dataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false);//localなら全部false。 } else { alice.dataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false); } break; case UPDATE: if (receiver.isCompressed()){ alice.dataSegment.getCompressedLocal().update(receiver.key, receiver.getReceiveData(), false); } else { alice.dataSegment.getLocal().update(receiver.key, receiver.getReceiveData(), false); } break; default: break; } } public void put(String key, ReceiveData rData) { alice.dataSegment.getLocal().put(key, rData, false); } public void put(String key, Object val) { ReceiveData rData = new ReceiveData(val); alice.dataSegment.getLocal().put(key, rData, false); } public void update(String key, Object val) { ReceiveData rData = new ReceiveData(val); alice.dataSegment.getLocal().update(key, rData, false); } /** * for remote */ public void put(String managerKey, String key, ReceiveData rData) { alice.dataSegment.get(managerKey).put(key, rData, false); } public void put(String managerKey, String key, Object val) {//追加 ReceiveData rData = new ReceiveData(val); alice.dataSegment.get(managerKey).put(key, rData, false); } public void quickPut(String managerKey, String key, ReceiveData rData) { alice.dataSegment.get(managerKey).put(key, rData, true); } public void quickPut(String managerKey, String key, Object val) { ReceiveData rData = new ReceiveData(val); alice.dataSegment.get(managerKey).put(key, rData, true); } public void update(String managerKey, String key, ReceiveData rData) { alice.dataSegment.get(managerKey).update(key, rData, false); } public void update(String managerKey, String key, Object val) { ReceiveData rData = new ReceiveData(val); alice.dataSegment.get(managerKey).update(key, rData, false); } public void quickUpdate(String managerKey, String key, ReceiveData rData) { alice.dataSegment.get(managerKey).update(key, rData, true); } public void quickUpdate(String managerKey, String key, Object val, boolean cFlag) { ReceiveData rData = new ReceiveData(val); alice.dataSegment.get(managerKey).update(key, rData, true); } /** * kill the Alice process after send other messages. * * @param managerKey */ public void finish(String managerKey) { if (alice.dataSegment.contains(managerKey)) alice.dataSegment.get(managerKey).finish(); } /** * close socket for Remotealice.dataSegment after send other messages. * * @param managerKey */ public void close(String managerKey) { if (alice.dataSegment.contains(managerKey)) alice.dataSegment.get(managerKey).close(); } /** * "key" is not remote AliceDaemon.dataSegment's key. * "Ping Response" return in this "key" * * @param managerKey * @param returnKey */ public void ping(String managerKey, String returnKey) { if (alice.dataSegment.contains(managerKey)) alice.dataSegment.get(managerKey).ping(returnKey); } }