Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/codesegment/LogUpdateCodeSegment.java @ 347:ae75a2d618f4
stop loop but not correct work
author | nozomi |
---|---|
date | Fri, 15 Sep 2017 18:10:54 +0900 |
parents | 7d40ac7e693f |
children | 944baaa4d345 |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.jungleNetwork.codesegment; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog; import java.util.List; /** * Created by kono on 2017/08/27. */ public class LogUpdateCodeSegment extends CodeSegment { Receiver log = ids.create(CommandType.TAKE); Receiver clist = ids.create(CommandType.PEEK); Receiver updator = ids.create(CommandType.TAKE); public LogUpdateCodeSegment() { log.setKey("log"); clist.setKey("_CLIST"); updator.setKey("updator"); } public LogUpdateCodeSegment(int index) { log.setKey("log", index); clist.setKey("_CLIST");; updator.setKey("updator"); } public void run() { int index = log.index; NetworkTreeOperationLog netLog = log.asClass(NetworkTreeOperationLog.class); @SuppressWarnings("unchecked") List<String> list = clist.asClass(List.class); for (String node : list) {//他ノードへlogの書き込み if (!node.equals(log.from)) { ods.put(node, log.key, log.getVal()); new LogUpdateCodeSegment(); } } JungleDistributedUpdator u = updator.asClass(JungleDistributedUpdator.class); if (!log.from.equals("local")) {//ほかノードからのlogの更新 Either<Error, JungleTreeEditor> either = u.update(netLog); if(either.isA()) { new LogUpdateCodeSegment(index); throw new IllegalStateException(); } } ods.put("updator",u); } }