comparison src/alice/jungle/transaction/NetworkTransactionManager.java @ 42:4419ac56cbfd

implemented serverName filed
author one
date Thu, 11 Jul 2013 19:58:36 +0900
parents b8b9668da13c
children 12d87bb4b84d
comparison
equal deleted inserted replaced
41:b8b9668da13c 42:4419ac56cbfd
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; 22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; 23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; 24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError;
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
27 import jungle.test.bbs.codesegment.NullCodeSegmentForUpdate;
27 28
28 public class NetworkTransactionManager<T extends TreeNode<T>> implements TransactionManager<T> 29 public class NetworkTransactionManager<T extends TreeNode<T>> implements TransactionManager<T>
29 { 30 {
30 31
31 private final AtomicReservableReference<TreeContext<T>> repository; 32 private final AtomicReservableReference<TreeContext<T>> repository;
32 private final TreeContext<T> tip; 33 private final TreeContext<T> tip;
33 private final ChangeListWriter writer; 34 private final ChangeListWriter writer;
34 private final String uuid; 35 private final String uuid;
35 private final String treeName; 36 private final String treeName;
37 private final String serverName;
36 38
37 public NetworkTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext<T> _tip, 39 public NetworkTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext<T> _tip,
38 AtomicReservableReference<TreeContext<T>> _repository,String _uuid) 40 AtomicReservableReference<TreeContext<T>> _repository,String _uuid, String _serverName)
39 { 41 {
40 repository = _repository; 42 repository = _repository;
41 tip = _tip; 43 tip = _tip;
42 writer = _writer; 44 writer = _writer;
43 uuid = _uuid; 45 uuid = _uuid;
44 treeName = _treeName; 46 treeName = _treeName;
47 serverName = _serverName;
45 } 48 }
46 49
47 @Override 50 @Override
48 public Either<Error, TransactionManager<T>> commit(T _newRoot,final TreeOperationLog _log) { 51 public Either<Error, TransactionManager<T>> commit(T _newRoot,final TreeOperationLog _log) {
49 ChangeSet cs = tip.getChangeSet(); 52 ChangeSet cs = tip.getChangeSet();
69 Result r = writer.write(list); 72 Result r = writer.write(list);
70 if(r != Result.SUCCESS) { 73 if(r != Result.SUCCESS) {
71 return DefaultEither.newA((Error)new DefaultError()); 74 return DefaultEither.newA((Error)new DefaultError());
72 } 75 }
73 try { 76 try {
74 updateDataSegment(uuid, treeName, list); 77 putDataSegment(uuid, treeName, list);
75 } catch (IOException e) { 78 } catch (IOException e) {
76 e.printStackTrace(); 79 e.printStackTrace();
77 } 80 }
78 reservation.confirm(); 81 reservation.confirm();
79 TransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer, newContext, repository, uuid); 82 TransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer, newContext, repository, uuid, serverName);
80 return DefaultEither.newB(txManager); 83 return DefaultEither.newB(txManager);
81 } 84 }
82 85
83 private void updateDataSegment(String _uuid, String _treeName, Iterable<TreeOperation> _log) throws IOException { 86 private void putDataSegment(String _uuid, String _treeName, Iterable<TreeOperation> _log) throws IOException {
84 DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer(); 87 DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer();
85 container.setTreeName(_treeName); 88 container.setTreeName(_treeName);
86 container.setUUID(_uuid); 89 container.setUUID(_uuid);
87 container.unconvert(_log); 90 container.unconvert(_log);
88 LogUpdateCodeSegment cs = new LogUpdateCodeSegment(); 91 NullCodeSegmentForUpdate cs = new NullCodeSegmentForUpdate();
89 cs.ods.update("local", "log", container); 92 cs.ods.put("local", "log", container);
90 93
91 } 94 }
92 95
93 @Override 96 @Override
94 public long getRevision() 97 public long getRevision()