Mercurial > hg > RemoteEditor > REPSessionManager
comparison rep/Editor.java @ 308:c5be84d53c7f channel-simulator-update **INVALID**
*** empty log message ***
author | kono |
---|---|
date | Sat, 04 Oct 2008 22:12:34 +0900 |
parents | 75192c844a8d |
children | 0585fd2410b8 |
comparison
equal
deleted
inserted
replaced
307:e4b7af3fdf99 | 308:c5be84d53c7f |
---|---|
20 private List<REPCommand> sentMergedList; | 20 private List<REPCommand> sentMergedList; |
21 private REPCommandOptimizer optimizer; | 21 private REPCommandOptimizer optimizer; |
22 private List<REPCommand> writeQueue; | 22 private List<REPCommand> writeQueue; |
23 private REPCommand quit2 = null; | 23 private REPCommand quit2 = null; |
24 private REPLogger ns = REPLogger.singleton(); | 24 private REPLogger ns = REPLogger.singleton(); |
25 private final int limit=100; | |
25 | 26 |
26 public Editor(){ | 27 public Editor(){ |
27 this(true); | 28 this(true); |
28 } | 29 } |
29 public Editor(boolean doOptimize){ | 30 public Editor(boolean doOptimize){ |
69 sendMergedCommand(cmds); | 70 sendMergedCommand(cmds); |
70 return list; | 71 return list; |
71 }else{ | 72 }else{ |
72 //エディタからの新たな編集コマンド | 73 //エディタからの新たな編集コマンド |
73 sentList.add(command); | 74 sentList.add(command); |
75 assert(sentList.size()<limit); | |
74 translater.transSendCmd(command); | 76 translater.transSendCmd(command); |
75 list.add(command); | 77 list.add(command); |
76 } | 78 } |
77 }else if(eid == REP.MERGE_EID.id){ | 79 }else if(eid == REP.MERGE_EID.id){ |
78 //マージコマンドが返ってきた | 80 //マージコマンドが返ってきた |
80 //マージ中にエディタからの割り込みがあった場合 | 82 //マージ中にエディタからの割り込みがあった場合 |
81 List<REPCommand> mergeAgainList = translater.getMergeAgain(); | 83 List<REPCommand> mergeAgainList = translater.getMergeAgain(); |
82 | 84 |
83 mergeAgainList = optimizer.optimize(mergeAgainList); | 85 mergeAgainList = optimizer.optimize(mergeAgainList); |
84 writeQueue.addAll(mergeAgainList); | 86 writeQueue.addAll(mergeAgainList); |
87 assert(writeQueue.size()<limit); | |
85 } | 88 } |
86 }else{ | 89 }else{ |
87 //他のエディタからの編集コマンド | 90 //他のエディタからの編集コマンド |
88 REPCommand[] cmds = translater.transReceiveCmd(command); | 91 REPCommand[] cmds = translater.transReceiveCmd(command); |
89 for(REPCommand cmd : cmds){ | 92 for(REPCommand cmd : cmds){ |
95 | 98 |
96 private void sendMergedCommand(ArrayList<REPCommand> cmds) { | 99 private void sendMergedCommand(ArrayList<REPCommand> cmds) { |
97 for(REPCommand mergeCommand : cmds){ | 100 for(REPCommand mergeCommand : cmds){ |
98 mergeCommand.setEID(REP.MERGE_EID.id); | 101 mergeCommand.setEID(REP.MERGE_EID.id); |
99 writeQueue.add(mergeCommand); | 102 writeQueue.add(mergeCommand); |
103 assert(writeQueue.size()<limit); | |
100 } | 104 } |
101 } | 105 } |
102 | 106 |
103 private boolean checkReturnedCommand(REPCommand command) { | 107 private boolean checkReturnedCommand(REPCommand command) { |
104 if(sentList.size() > 0){ | 108 if(sentList.size() > 0){ |
177 file = string; | 181 file = string; |
178 } | 182 } |
179 | 183 |
180 public void send(REPCommand command) { | 184 public void send(REPCommand command) { |
181 writeQueue.add(command); | 185 writeQueue.add(command); |
186 assert(writeQueue.size()<limit); | |
182 } | 187 } |
183 | 188 |
184 public void setChannel(REPSocketChannel<REPCommand> channel) { | 189 public void setChannel(REPSocketChannel<REPCommand> channel) { |
185 myChannel = channel; | 190 myChannel = channel; |
186 } | 191 } |