Mercurial > hg > RemoteEditor > REPSessionManager
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) { |