comparison rep/handler/Translator.java @ 433:bd883b059360

merge test worked, but checked.
author one
date Sun, 03 Jan 2010 19:09:50 +0900
parents 1bb59652d89c
children 0e72945867bb
comparison
equal deleted inserted replaced
432:46199cf0046e 433:bd883b059360
62 // sort したコマンド列を生成する 62 // sort したコマンド列を生成する
63 for( REPCommand cmd0 : unMergedCmds) { 63 for( REPCommand cmd0 : unMergedCmds) {
64 output.add( createUndo(cmd0) ); 64 output.add( createUndo(cmd0) );
65 } 65 }
66 for( REPCommand cmd0 : editor.getSentList()) { 66 for( REPCommand cmd0 : editor.getSentList()) {
67 cmds.add(cmd0); 67 if (cmd0.cmd==REP.REPCMD_INSERT || cmd0.cmd==REP.REPCMD_DELETE)
68 cmds.add(cmd0);
68 } 69 }
69 output.addAll(cmds); 70 output.addAll(cmds);
70 // ACKが来たものは必ず先頭 71 // ACKが来たものは必ず先頭
71 72
72 // unMerged command のdeleteのundo string は、この時点で使えない。 73 // unMerged command のdeleteのundo string は、この時点で使えない。
86 List<REPCommand> output1 = optimizer.optimize(output); 87 List<REPCommand> output1 = optimizer.optimize(output);
87 if (output1.size()==0) { 88 if (output1.size()==0) {
88 merge_mode = false; 89 merge_mode = false;
89 return false; 90 return false;
90 } 91 }
92 assert(sentMergedList.size()==0);
91 for(REPCommand c:output1) { 93 for(REPCommand c:output1) {
92 REPCommand m = new REPCommand(c); 94 REPCommand m = new REPCommand(c);
93 m.setEID(REP.MERGE_EID.id); 95 m.setEID(REP.MERGE_EID.id);
94 m.setSEQID(editor.seq()); 96 m.setSEQID(editor.seq());
95 sentMergedList.add(m); 97 sentMergedList.add(m);
128 * @param cmd the command to be translated. 130 * @param cmd the command to be translated.
129 * @return translated commannd. 131 * @return translated commannd.
130 */ 132 */
131 public void transReceiveCmd(REPNode nextEditor,REPCommand cmd){ 133 public void transReceiveCmd(REPNode nextEditor,REPCommand cmd){
132 assert (cmd.eid != eid); 134 assert (cmd.eid != eid);
133 unMergedCmds.addLast(cmd); 135 unMergedCmds.addFirst(cmd);
134 } 136 }
135 137
136 public void setEid(int _eid){ 138 public void setEid(int _eid){
137 eid = _eid; 139 eid = _eid;
138 } 140 }
139 141
140 public boolean checkMergeConflict(REPCommand command) { 142 public boolean checkMergeConflict(REPCommand command) {
141 unMergedCmds.addLast(command); 143 unMergedCmds.addFirst(command);
142 REPCommand prev = sentMergedList.remove(); 144 REPCommand prev = sentMergedList.remove();
143 //assert (prev.seq==command.seq); 145 assert (prev.seq==command.seq);
144 146
145 if (mergeAgain) { 147 if (mergeAgain) {
146 return true; 148 return true;
147 } 149 }
148 if(sentMergedList.size()==0) { 150 if(sentMergedList.size()==0) {