Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/codesegment/LogUpdateCodeSegment.java @ 363:a3afcd044259
Logupdate terminate
author | suruga |
---|---|
date | Fri, 02 Feb 2018 19:01:52 +0900 |
parents | 944baaa4d345 |
children |
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; @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()); System.out.println("LogUpdator: write to node " + node + " from " + log.from ); } } JungleDistributedUpdator u = updator.asClass(JungleDistributedUpdator.class); if (log.getVal() == null) { ods.put("finish", 0); return; } NetworkTreeOperationLog netLog = log.asClass(NetworkTreeOperationLog.class); if (!log.from.equals("local")) {//ほかノードからのlogの更新 Either<Error, JungleTreeEditor> either = u.update(netLog); System.out.println("LogUpdator: Update from " + log.from); if(either.isA()) { // throw new IllegalStateException(); } } ods.put("updator",u); new LogUpdateCodeSegment(); } }