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;