Mercurial > hg > RemoteEditor > REPSessionManager
comparison test/sematest/TestEditor.java @ 300:8f6b7a1890b2
*** empty log message ***
author | kono |
---|---|
date | Wed, 01 Oct 2008 16:20:04 +0900 |
parents | d13dad30fd24 |
children | 4ee012f19855 |
comparison
equal
deleted
inserted
replaced
299:d13dad30fd24 | 300:8f6b7a1890b2 |
---|---|
99 handle(channel.read()); | 99 handle(channel.read()); |
100 } | 100 } |
101 continue; | 101 continue; |
102 } else if (selector.select(timeout)<=0) { | 102 } else if (selector.select(timeout)<=0) { |
103 if (syncCounter>0) { | 103 if (syncCounter>0) { |
104 if (syncCounter>text.size()) { | 104 syncText(); |
105 syncCounter=0; | |
106 } else { | |
107 int i=syncCounter-1; | |
108 REPCommand del = new REPCommand(REP.REPCMD_DELETE,sid,eid,0,i, text.get(i)); | |
109 REPCommand ins = new REPCommand(REP.REPCMD_INSERT,sid,eid,0,i, text.get(i)); | |
110 sendCommand(del); | |
111 sendCommand(ins); | |
112 syncCounter++; | |
113 } | |
114 } | 105 } |
115 userInput(); | 106 userInput(); |
116 } else { | 107 } else { |
117 handle(channel.read()); | 108 handle(channel.read()); |
118 } | 109 } |
110 } | |
111 } | |
112 | |
113 private void syncText() { | |
114 if (syncCounter>text.size()) { | |
115 syncCounter=0; | |
116 } else { | |
117 int i=syncCounter-1; | |
118 REPCommand del = new REPCommand(REP.REPCMD_DELETE,sid,eid,0,i, text.get(i)); | |
119 REPCommand ins = new REPCommand(REP.REPCMD_INSERT,sid,eid,0,i, text.get(i)); | |
120 sendCommand(del); | |
121 sendCommand(ins); | |
122 syncCounter++; | |
119 } | 123 } |
120 } | 124 } |
121 | 125 |
122 private void userInput() { | 126 private void userInput() { |
123 REPCommand cmd = cmds.poll(); | 127 REPCommand cmd = cmds.poll(); |
137 sendCommand(cmd); | 141 sendCommand(cmd); |
138 break; | 142 break; |
139 case SMCMD_JOIN: | 143 case SMCMD_JOIN: |
140 case SMCMD_PUT: | 144 case SMCMD_PUT: |
141 sendCommand(cmd); | 145 sendCommand(cmd); |
146 inputLock = true; // wait until ACK | |
142 break; | 147 break; |
143 default: | 148 default: |
144 assert(false); | 149 assert(false); |
145 } | 150 } |
146 } else { | 151 } else { |
162 ns.writeLog(name +": read "+cmd); | 167 ns.writeLog(name +": read "+cmd); |
163 switch(cmd.cmd) { | 168 switch(cmd.cmd) { |
164 case REPCMD_INSERT : | 169 case REPCMD_INSERT : |
165 text.insert(cmd.lineno, cmd.string); | 170 text.insert(cmd.lineno, cmd.string); |
166 sendCommand(cmd); | 171 sendCommand(cmd); |
167 sendCommand(nop); | 172 // sendCommand(nop); session manager do this for me |
168 break; | 173 break; |
169 case REPCMD_INSERT_ACK : | 174 case REPCMD_INSERT_ACK : |
170 assert(false); | 175 assert(false); |
171 break; | 176 break; |
172 case REPCMD_DELETE : | 177 case REPCMD_DELETE : |
173 String del = text.delete(cmd.lineno); | 178 String del = text.delete(cmd.lineno); |
174 cmd.setString(del); | 179 cmd.setString(del); |
175 sendCommand(cmd); | 180 sendCommand(cmd); |
176 sendCommand(nop); | 181 // sendCommand(nop); session manager do this for me |
177 break; | 182 break; |
178 case REPCMD_DELETE_ACK : | 183 case REPCMD_DELETE_ACK : |
179 assert(false); | 184 assert(false); |
180 break; | 185 break; |
181 case REPCMD_CLOSE : | 186 case REPCMD_CLOSE : |
187 sendCommand(nop); | 192 sendCommand(nop); |
188 break; | 193 break; |
189 case SMCMD_JOIN_ACK : | 194 case SMCMD_JOIN_ACK : |
190 sid = cmd.sid; | 195 sid = cmd.sid; |
191 eid = cmd.eid; | 196 eid = cmd.eid; |
197 inputLock = false; | |
192 break; | 198 break; |
193 case SMCMD_PUT_ACK : | 199 case SMCMD_PUT_ACK : |
194 sid = cmd.sid; | 200 sid = cmd.sid; |
195 eid = cmd.eid; | 201 eid = cmd.eid; |
202 inputLock = false; | |
196 break; | 203 break; |
197 case SMCMD_QUIT : | 204 case SMCMD_QUIT : |
198 sendCommand(cmd); | 205 sendCommand(cmd); |
199 cmds.clear(); | 206 cmds.clear(); |
200 break; | 207 break; |