annotate rep/handler/Translator.java @ 456:629211b606e4

delayed merge mode in translator
author one
date Thu, 23 Sep 2010 23:51:39 +0900
parents d0d2449000f5
children 295c257ac073
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 package rep.handler;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
2
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
3 import java.util.Comparator;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
4 import java.util.LinkedList;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 import java.util.List;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
6 import java.util.TreeSet;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
7
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
8 import rep.REP;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
9 import rep.REPCommand;
407
de4ef4313adc looks like working...
one
parents: 397
diff changeset
10 import rep.SessionManager;
421
f8916a96a373 (no commit message)
one
parents: 411
diff changeset
11 import rep.channel.REPLogger;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 import rep.optimizers.REPCommandOptimizer;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
13
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
14 public class Translator {
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
15 public int eid;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
16
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
17 public REPCommandOptimizer optimizer;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 private LinkedList<REPCommand> unMergedCmds;
438
146d91b61b36 minor fix
one
parents: 435
diff changeset
19 private LinkedList<REPCommand> sentMergedList;
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
20 private TreeSet<REPCommand> sortedEditCmds;
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
21 boolean mergeAgain;
421
f8916a96a373 (no commit message)
one
parents: 411
diff changeset
22 public REPLogger logger = SessionManager.logger;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
23 boolean merge_mode = false;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
24
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
25 public Translator(int _eid,REPCommandOptimizer opt){
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
26 eid = _eid;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
27 optimizer = opt;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
28 unMergedCmds = new LinkedList<REPCommand>();
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
29 mergeAgain = false;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
30 sentMergedList = new LinkedList<REPCommand>();
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
31 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
32
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
33 /**
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
34 * New command from an editor
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
35 * The command is sent to the next editor
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
36 * @param cmd
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
37 * @return translated command.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
38 */
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
39 public REPCommand transSendCmd(REPCommand cmd){
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
40 assert(cmd.eid==eid);
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
41 unMergedCmds.addLast(cmd);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
42
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
43 //マージ中にユーザから割り込みがあった場合
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
44 if(isMerging()){
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
45 mergeAgain = true;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
46 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
47
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
48 return cmd;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
49 }
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
50
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
51 /**
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
52 * My command is returned from the session ring, and START_MERGE_ACK
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
53 * is returned. At this
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
54 * stage my writeQueue is empty, our editor is waiting for me.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
55 * Start merge process.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
56 * @param cmd
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
57 */
435
2b034d12170e early sent list shortning. not yet worked.
one
parents: 434
diff changeset
58 public boolean catchOwnCommand(REPNode editor, REPCommand prev){
442
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
59 logger.writeLog("beforeMerge"+eid+":"+unMergedCmds);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
60 LinkedList<REPCommand> output = new LinkedList<REPCommand>();
427
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
61 // merge queue上にあるコマンドを全部undoコマンドするのと同時に
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
62 // sort したコマンド列を生成する
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
63 for( REPCommand cmd0 : unMergedCmds) {
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
64 output.add( createUndo(cmd0) );
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
65 }
434
0e72945867bb merge on going...
one
parents: 433
diff changeset
66
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
67 sortedEditCmds = new TreeSet<REPCommand>(new REPCommandComparator(1));
446
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
68 logger.writeLog("sentList"+eid+":"+editor.getSentList());
449
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
69 boolean merged = true;
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
70 for( REPCommand cmd0 : editor.getSentList()) {
449
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
71 if (cmd0.cmd==REP.SMCMD_START_MERGE) {
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
72 merged = false;
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
73 continue;
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
74 }
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
75 if (merged) continue;
433
bd883b059360 merge test worked, but checked.
one
parents: 431
diff changeset
76 if (cmd0.cmd==REP.REPCMD_INSERT || cmd0.cmd==REP.REPCMD_DELETE)
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
77 sortedEditCmds.add(cmd0);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
78 }
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
79 logger.writeLog("sortedMerge"+eid+":"+sortedEditCmds);
442
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
80 // logger.writeLog("Ediotr"+eid+" Merge:: sorted sent list => Eid="+eid+cmds+" ack="+prev);
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
81 output.addAll(sortedEditCmds);
427
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
82 // ACKが来たものは必ず先頭
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
83
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
84 // unMerged command のdeleteのundo string は、この時点で使えない。
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
85 // Editor 側から送り返して来たものを使う必要がある。
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
86 unMergedCmds.clear();
442
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
87 logger.writeLog("outputMerge"+eid+":"+output);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
88 return optimizedSend(editor,output);
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
89 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
90
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
91 /**
446
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
92 * Received all merge command ack
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
93 */
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
94 public void endMerge() {
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
95 sortedEditCmds = null;
449
89a326696c54 mergeMark in sentList
one
parents: 448
diff changeset
96 unMergedCmds = new LinkedList<REPCommand>();
446
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
97 }
6a7004071777 It works, sometimes.
one
parents: 445
diff changeset
98 /**
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
99 * Sent optimized merged command list
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
100 * @param editor
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
101 * @param output
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
102 * @return if any sent commands output
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
103 */
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
104 public boolean optimizedSend(REPNode editor, LinkedList<REPCommand> output) {
447
dc9b2da06fa9 add README
one
parents: 446
diff changeset
105 /*
dc9b2da06fa9 add README
one
parents: 446
diff changeset
106 * Optimized send の場合は、unMergedCommand のつじつまを合わせる必要がある。
dc9b2da06fa9 add README
one
parents: 446
diff changeset
107 */
439
5cbe1731f40c fix checkAck in Editor.java
one
parents: 438
diff changeset
108 sentMergedList.clear();
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
109 List<REPCommand> output1 = optimizer.optimize(output);
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
110 if (output1.size()==0) {
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
111 merge_mode = false;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
112 return false;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
113 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
114 for(REPCommand c:output1) {
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
115 REPCommand m = new REPCommand(c);
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
116 m.setEID(REP.MERGE_EID.id);
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
117 m.setSEQID(editor.seq());
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
118 sentMergedList.addLast(m);
450
21cb16b7f3df block message in Editor.write()
one
parents: 449
diff changeset
119 editor.sendToEditor(m);
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
120 }
442
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
121 logger.writeLog("OptimizedOutputMerge"+eid+":"+sentMergedList);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
122 merge_mode = true;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
123 return true;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
124 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
125
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
126 private REPCommand createUndo(REPCommand cmd){
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
127 REPCommand retCmd = new REPCommand(cmd);
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
128 if (cmd.cmd==REP.REPCMD_INSERT) {
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
129 retCmd.cmd=REP.REPCMD_DELETE;
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
130 retCmd.string="";
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
131 }
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
132 else if (cmd.cmd==REP.REPCMD_DELETE) retCmd.cmd=REP.REPCMD_INSERT;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
133 return retCmd;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
134 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
135
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
136 class REPCommandComparator implements Comparator<REPCommand>{
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
137 int base;
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
138 REPCommandComparator(int base) {
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
139 this.base = base;
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
140 }
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
141 public int compare(REPCommand o1, REPCommand o2) {
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
142 int eid1 = o1.eid-base; if (eid1<0) eid1 += Integer.MAX_VALUE;
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
143 int eid2 = o2.eid-base; if (eid2<0) eid2 += Integer.MAX_VALUE;
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
144 if ( eid1<eid2 ) return -1;
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
145 if ( eid1>eid2 ) return 1;
427
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
146 if ( o1.seq<o2.seq ) return -1;
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
147 if ( o1.seq>o2.seq ) return 1;
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
148 // assert(false); // this can happen in MergedAgain case
427
622a8e15ff40 Merge Worked ?
one
parents: 426
diff changeset
149 return 0;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
150 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
151 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
152
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
153 /**
439
5cbe1731f40c fix checkAck in Editor.java
one
parents: 438
diff changeset
154 * Translate Command that was received from SeMa.
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
155 * @param cmd the command to be translated.
439
5cbe1731f40c fix checkAck in Editor.java
one
parents: 438
diff changeset
156 * @return translated command.
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
157 */
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
158 public void transReceiveCmd(REPNode nextEditor,REPCommand cmd){
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
159 assert (cmd.eid != eid);
433
bd883b059360 merge test worked, but checked.
one
parents: 431
diff changeset
160 unMergedCmds.addFirst(cmd);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
161 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
162
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
163 public void setEid(int _eid){
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
164 eid = _eid;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
165 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
166
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
167 public boolean checkMergeConflict(REPCommand command) {
433
bd883b059360 merge test worked, but checked.
one
parents: 431
diff changeset
168 unMergedCmds.addFirst(command);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
169
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
170 REPCommand prev = sentMergedList.getFirst();
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
171 if (prev.seq==command.seq) {
442
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
172 // logger.writeLog("Input eid="+eid+"SentMergedList = "+sentMergedList);
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
173 sentMergedList.removeFirst();
442
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
174 }
3819dec4641e command waiting during merge
one
parents: 441
diff changeset
175 // previous merge command may be returned
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
176
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
177 if(sentMergedList.size()==0 && !mergeAgain) {
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
178 merge_mode=false;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
179 }
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
180 return mergeAgain;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
181 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
182
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
183 public void getMergeAgain(REPNode editor) {
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
184 if (sentMergedList.size()>0) return; // wait for previous merge completion
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
185
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
186 LinkedList<REPCommand> returnCommand = new LinkedList<REPCommand>();
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
187 LinkedList<REPCommand> merge = new LinkedList<REPCommand>();
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
188 LinkedList<REPCommand> conflict = new LinkedList<REPCommand>();
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
189 for(REPCommand command : unMergedCmds) {
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
190 returnCommand.add(createUndo(command));
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
191 }
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
192 for(REPCommand command : unMergedCmds) {
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
193 if(command.eid == REP.MERGE_EID.id){
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
194 merge.addLast(command);
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
195 sortedEditCmds.add(command);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
196 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
197 }
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
198 for(REPCommand command : unMergedCmds){
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
199 if(command.eid == eid){
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
200 command.eid = REP.MERGE_EID.id;
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
201 conflict.addLast(command);
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
202 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
203 }
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
204 unMergedCmds.clear();
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
205 returnCommand.addAll(merge);
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
206 returnCommand.addAll(conflict);
441
15888d516f10 wait for pervious merge completion in getMargedAgain
one
parents: 440
diff changeset
207 logger.writeLog("MergeAgain "+eid+" ret="+returnCommand.size());
431
1bb59652d89c fixing merge...
one
parents: 427
diff changeset
208 mergeAgain = false;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
209 optimizedSend(editor, returnCommand);
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
210 }
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
211 //
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
212 // public boolean isFinished() {
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
213 // if(unMergedCmds.size() > 0) return false;
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
214 // if(sentMergedList.size() > 0) return false;
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
215 // return true;
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
216 // }
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
217
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
218 public boolean isMerging() {
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
219 return merge_mode;
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
220 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
221
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
222 public void startMerge(REPCommand cmd) {
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
223 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
224
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
225 /**
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
226 * receive SMCMD_START_MERGE_ACK
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
227 */
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
228 public void mergeAck() {
456
629211b606e4 delayed merge mode in translator
one
parents: 452
diff changeset
229 logger.writeLog("Editor"+eid+": START MERGE "+
629211b606e4 delayed merge mode in translator
one
parents: 452
diff changeset
230 ((unMergedCmds.size()>0)?" and top of unMergedCmds = "+ unMergedCmds.getLast():""));
629211b606e4 delayed merge mode in translator
one
parents: 452
diff changeset
231 merge_mode = true;
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
232 }
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
233
445
22a741c1fa2d fix unMergedCmds in endMerge
one
parents: 442
diff changeset
234
390
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
235
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
236
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
237 }