Mercurial > hg > Database > jungle-network
comparison src/alice/jungle/transaction/NetworkTransactionManager.java @ 34:bf696a6334b2
add LogUpdateCodeSegment
author | one |
---|---|
date | Tue, 02 Jul 2013 11:52:32 +0900 |
parents | 2f1879e0acec |
children | 054dc02c117d |
comparison
equal
deleted
inserted
replaced
33:afccf06c4063 | 34:bf696a6334b2 |
---|---|
1 package alice.jungle.transaction; | 1 package alice.jungle.transaction; |
2 | 2 |
3 import java.io.IOException; | |
3 import java.util.Iterator; | 4 import java.util.Iterator; |
5 | |
6 import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer; | |
4 | 7 |
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; | 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; |
61 Reservation reservation = repository.makeReservation(tip, newContext); | 64 Reservation reservation = repository.makeReservation(tip, newContext); |
62 if(reservation == null) { | 65 if(reservation == null) { |
63 return DefaultEither.newA((Error)new DefaultError()); | 66 return DefaultEither.newA((Error)new DefaultError()); |
64 } | 67 } |
65 Result r = writer.write(list); | 68 Result r = writer.write(list); |
66 if(r == Result.SUCCESS){ | 69 if(r != Result.SUCCESS) { |
67 reservation.confirm(); | 70 return DefaultEither.newA((Error)new DefaultError()); |
68 TransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer, newContext, repository, uuid); | |
69 return DefaultEither.newB(txManager); | |
70 } | 71 } |
71 return DefaultEither.newA((Error)new DefaultError()); | 72 try { |
73 updateDataSegment(uuid, treeName, list); | |
74 } catch (IOException e) { | |
75 e.printStackTrace(); | |
76 } | |
77 reservation.confirm(); | |
78 TransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer, newContext, repository, uuid); | |
79 return DefaultEither.newB(txManager); | |
80 } | |
81 | |
82 private void updateDataSegment(String _uuid, String _treeName, Iterable<TreeOperation> _log) throws IOException { | |
83 DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer(); | |
84 container.setTreeName(_treeName); | |
85 container.setUUID(_uuid); | |
86 container.unconvert(_log); | |
87 | |
72 } | 88 } |
73 | 89 |
74 @Override | 90 @Override |
75 public long getRevision() | 91 public long getRevision() |
76 { | 92 { |