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