annotate src/alice/jungle/persistence/NetworkJournal.java @ 84:82d1d3dac7bc

Modfied NetworkTransactionManager
author one
date Sun, 27 Oct 2013 20:05:53 +0900
parents b3ccefdf2b43
children e641f559559c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
1 package alice.jungle.persistence;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
2
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
3 import java.io.EOFException;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
4 import java.io.File;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
5 import java.io.FileInputStream;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
6 import java.io.FileNotFoundException;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
7 import java.io.FileOutputStream;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
8 import java.io.IOException;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
9 import java.io.InputStream;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
10 import java.io.OutputStream;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
11 import java.util.Iterator;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
12
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
13 import org.msgpack.MessagePack;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
14
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
15 import alice.jungle.operations.NetworkTreeOperationLog;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
16
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
84
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
24
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
25 public class NetworkJournal implements Journal {
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
26
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
27 private static final NetworkChangeListWriter WRITER = new NetworkChangeListWriter();
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
28 private static final NetworkChangeListReader READER = new NetworkChangeListReader();
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
29 private static MessagePack msgpack = new MessagePack();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
30 private static OutputStream out = null;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
31 private static InputStream in = null;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
32
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
33 public NetworkJournal() {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
34
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
35 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
36
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
37 public NetworkJournal(File file) throws FileNotFoundException {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
38 out = new FileOutputStream(file, true);
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
39 in = new FileInputStream(file);
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
40 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
41
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
42 @Override
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
43 public ChangeListReader getReader() {
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
44 return READER;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
45 }
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
46 @Override
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
47 public ChangeListWriter getWriter() {
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
48 return WRITER;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
49 }
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
50
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
51 public void close() throws IOException {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
52 out.close();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
53 in.close();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
54 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
55
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
56 public void setOutputStream(OutputStream _out) {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
57 out = _out;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
58 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
59
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
60 public OutputStream getOutputStream() {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
61 return out;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
62 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
63
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
64 public void setInputStream(InputStream _in) {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
65 in = _in;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
66 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
67
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
68 public InputStream getInputStream() {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
69 return in;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
70 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
71
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
72 private static class NetworkChangeListWriter implements ChangeListWriter
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
73 {
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
74 @Override
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
75 public Result write(ChangeList _operations)
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
76 {
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
77 NetworkTreeOperationLog log = new NetworkTreeOperationLog(_operations);
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
78 try {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
79 msgpack.write(out, log);
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
80 out.flush();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
81 } catch (IOException e) {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
82 return null;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
83 }
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
84 return Result.SUCCESS;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
85 }
84
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
86
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
87 public Result write(ChangeSet cs)
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
88 {
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
89 NetworkTreeOperationLog log = new NetworkTreeOperationLog(cs.uuid(),cs.getChangeList());
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
90 try {
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
91 msgpack.write(out, log);
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
92 out.flush();
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
93 } catch (IOException e) {
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
94 return null;
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
95 }
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
96 return Result.SUCCESS;
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
97 }
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
98
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
99 }
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
100
84
82d1d3dac7bc Modfied NetworkTransactionManager
one
parents: 83
diff changeset
101 public static MessagePack getMessagePack() {
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
102 return msgpack;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
103 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
104
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
105 private static class NetworkChangeListReader implements ChangeListReader
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
106 {
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
107
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
108
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
109 @Override
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
110 public ChangeListReader newReader()
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
111 {
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
112 return this;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
113 }
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
114
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
115 @Override
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
116 public ChangeList read()
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
117 {
83
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
118 try {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
119 final NetworkTreeOperationLog readLog = msgpack.read(in, NetworkTreeOperationLog.class);
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
120 ChangeList cl = new ChangeList() {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
121 @Override
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
122 public Iterator<TreeOperation> iterator() {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
123 return readLog.iterator();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
124 }
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
125 };
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
126 return cl;
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
127 } catch (EOFException e){
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
128 // e.printStackTrace();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
129 } catch (IOException e) {
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
130 // e.printStackTrace();
b3ccefdf2b43 Added PersistentExample
one
parents: 81
diff changeset
131 }
81
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
132 return null;
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
133 }
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
134
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
135 }
b9dd8ec0e66e Added NetworkJournal
one
parents:
diff changeset
136 }