Mercurial > hg > RemoteEditor > REPSessionManager
comparison rep/handler/Translator.java @ 421:f8916a96a373
(no commit message)
author | one |
---|---|
date | Sat, 06 Jun 2009 14:42:40 +0900 |
parents | 795ef563f2a0 |
children | 1acc3dfde5d3 |
comparison
equal
deleted
inserted
replaced
420:5c95a9020e31 | 421:f8916a96a373 |
---|---|
7 import java.util.TreeSet; | 7 import java.util.TreeSet; |
8 | 8 |
9 import rep.REP; | 9 import rep.REP; |
10 import rep.REPCommand; | 10 import rep.REPCommand; |
11 import rep.SessionManager; | 11 import rep.SessionManager; |
12 import rep.channel.REPLogger; | |
12 import rep.optimizers.REPCommandOptimizer; | 13 import rep.optimizers.REPCommandOptimizer; |
13 | 14 |
14 public class Translator { | 15 public class Translator { |
15 public int eid; | 16 public int eid; |
16 | 17 |
17 public REPCommandOptimizer optimizer; | 18 public REPCommandOptimizer optimizer; |
18 private LinkedList<REPCommand> unMergedCmds; | 19 private LinkedList<REPCommand> unMergedCmds; |
19 public LinkedList<REPCommand> sentMergedList; | 20 public LinkedList<REPCommand> sentMergedList; |
20 private LinkedList<REPCommand> mergeAgainList; | 21 private LinkedList<REPCommand> mergeAgainList; |
22 public REPLogger logger = SessionManager.logger; | |
21 boolean merge_mode = false; | 23 boolean merge_mode = false; |
22 | 24 |
23 public Translator(int _eid,REPCommandOptimizer opt){ | 25 public Translator(int _eid,REPCommandOptimizer opt){ |
24 eid = _eid; | 26 eid = _eid; |
25 optimizer = opt; | 27 optimizer = opt; |
51 * stage my writeQueue is empty, our editor is waiting for me. | 53 * stage my writeQueue is empty, our editor is waiting for me. |
52 * Start merge process. | 54 * Start merge process. |
53 * @param cmd | 55 * @param cmd |
54 */ | 56 */ |
55 public boolean catchOwnCommand(REPNode editor){ | 57 public boolean catchOwnCommand(REPNode editor){ |
58 logger.writeLog("beforeMarge:"+unMergedCmds); | |
56 LinkedList<REPCommand> output = new LinkedList<REPCommand>(); | 59 LinkedList<REPCommand> output = new LinkedList<REPCommand>(); |
57 LinkedList<REPCommand> cmds = new LinkedList<REPCommand>(); | 60 LinkedList<REPCommand> cmds = new LinkedList<REPCommand>(); |
58 //スタック上にあるコマンドを全部undoコマンドにする | 61 //スタック上にあるコマンドを全部undoコマンドにする |
59 while ( !unMergedCmds.isEmpty() ){ | 62 while ( !unMergedCmds.isEmpty() ){ |
60 REPCommand cmd0 = unMergedCmds.removeLast(); | 63 REPCommand cmd0 = unMergedCmds.removeLast(); |
66 output.addAll( sortCmds(cmds) ); | 69 output.addAll( sortCmds(cmds) ); |
67 | 70 |
68 /* 残ったコマンドも再び実行させるが、まだマージされてないのでunMergedにも入れる */ | 71 /* 残ったコマンドも再び実行させるが、まだマージされてないのでunMergedにも入れる */ |
69 output.addAll(cmds); | 72 output.addAll(cmds); |
70 unMergedCmds.addAll(cmds); | 73 unMergedCmds.addAll(cmds); |
74 logger.writeLog("outputMarge:"+output); | |
75 logger.writeLog("afterMarge:"+unMergedCmds); | |
71 return optimizedSend(editor,output); | 76 return optimizedSend(editor,output); |
72 } | 77 } |
73 | 78 |
74 /** | 79 /** |
75 * Sent optimized merged command list | 80 * Sent optimized merged command list |
201 // case REPCMD_INSERT: count++; break; | 206 // case REPCMD_INSERT: count++; break; |
202 // case REPCMD_DELETE: count--; break; | 207 // case REPCMD_DELETE: count--; break; |
203 // default: assert false; | 208 // default: assert false; |
204 // } | 209 // } |
205 // } | 210 // } |
206 SessionManager.logger.writeLog("MergeAgain ret="+returnCommand.size()); | 211 logger.writeLog("MergeAgain ret="+returnCommand.size()); |
207 // +" increment="+count); | 212 // +" increment="+count); |
208 mergeAgainList.clear(); | 213 mergeAgainList.clear(); |
209 optimizedSend(editor, returnCommand); | 214 optimizedSend(editor, returnCommand); |
210 } | 215 } |
211 | 216 |