comparison test/sematest/TestEditor.java @ 303:41f05c8ff02b

*** empty log message ***
author kono
date Wed, 01 Oct 2008 18:32:38 +0900
parents 4ee012f19855
children 75192c844a8d
comparison
equal deleted inserted replaced
302:4ee012f19855 303:41f05c8ff02b
35 private String name; 35 private String name;
36 private REPCommand nop = new REPCommand(REP.REPCMD_NOP,0,0,0,0,""); 36 private REPCommand nop = new REPCommand(REP.REPCMD_NOP,0,0,0,0,"");
37 private boolean inputLock=false; 37 private boolean inputLock=false;
38 public boolean detached=false; 38 public boolean detached=false;
39 public boolean master=false; 39 public boolean master=false;
40 private int syncCounter; 40 private int syncCounter=0;
41 private boolean hasInputLock=true; 41 private boolean hasInputLock=true;
42 42
43 static private String[] text1d = { 43
44 "aaa", "bbb", "ccc", "ddd", "eee",
45 };
46
47 public TestEditor(String name, String _host,int _port, boolean master){ 44 public TestEditor(String name, String _host,int _port, boolean master){
48 super(name); 45 super(name);
46 LinkedList<REPCommand>cmdList = new LinkedList<REPCommand>();
47 String[] txts = {
48 "aaa", "bbb", "ccc", "ddd", "eee",
49 };
49 semaIP = new InetSocketAddress(_host, _port); 50 semaIP = new InetSocketAddress(_host, _port);
50 ns = REPLogger.singleton(); 51 ns = REPLogger.singleton();
51 this.name = name; 52 this.name = name;
52 cmds = new LinkedList<REPCommand>(); 53 cmds = cmdList;
53 if (master) { 54 if (master) {
54 this.master=true; 55 this.master=true;
55 text = new Text(text1d); 56 text = new Text(txts);
56 cmds.add(new REPCommand(REP.SMCMD_PUT,0,0,0,0,name+"-file")); 57 cmds.add(new REPCommand(REP.SMCMD_PUT,0,0,0,0,name+"-file"));
57 cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"m0")); 58 cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"m0"));
58 cmds.add(new REPCommand(REP.REPCMD_DELETE,0,0,0,0,"m0")); 59 cmds.add(new REPCommand(REP.REPCMD_DELETE,0,0,0,0,"m0"));
59 cmds.add(new REPCommand(REP.SMCMD_QUIT,0,0,0,0,"")); 60 cmds.add(new REPCommand(REP.SMCMD_QUIT,0,0,0,0,""));
60 } else { 61 } else {
61 text = new Text(new String[0]); 62 text = new Text(new String[0]);
62 cmds.add(new REPCommand(REP.SMCMD_JOIN,0,0,0,0,name)); 63 cmds.add(new REPCommand(REP.SMCMD_JOIN,0,0,0,0,name));
63 cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"c0")); 64 cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"c0"));
64 cmds.add(new REPCommand(REP.REPCMD_DELETE,0,0,0,0,"c0")); 65 cmds.add(new REPCommand(REP.REPCMD_DELETE,0,0,0,0,"c0"));
65 //cmds.add(new REPCommand(REP.SMCMD_QUIT,0,0,0,0,"")); 66 }
67 }
68
69 public TestEditor(String name, String _host,int _port, boolean master,
70 String[] txts,LinkedList<REPCommand> cmdList){
71 super(name);
72 semaIP = new InetSocketAddress(_host, _port);
73 ns = REPLogger.singleton();
74 this.name = name;
75 cmds = cmdList;
76 if (master) {
77 this.master=true;
78 text = new Text(txts);
66 } 79 }
67 } 80 }
68 81
69 public void run(){ 82 public void run(){
70 /* 83 /*
155 * start termination phase 1 by the master editor. 168 * start termination phase 1 by the master editor.
156 * after this command do not send any user input. 169 * after this command do not send any user input.
157 * clients simply disconnect from the session manager. 170 * clients simply disconnect from the session manager.
158 */ 171 */
159 cmds.clear(); 172 cmds.clear();
160 sendCommand(cmd,cmd.seq++); 173 sendCommand(cmd,seq++);
161 break; 174 break;
162 case SMCMD_JOIN: 175 case SMCMD_JOIN:
163 case SMCMD_PUT: 176 case SMCMD_PUT:
164 sendCommand(cmd,seq++); 177 sendCommand(cmd,seq++);
165 /* 178 /*
222 sid = cmd.sid; 235 sid = cmd.sid;
223 eid = cmd.eid; 236 eid = cmd.eid;
224 inputLock = false; 237 inputLock = false;
225 break; 238 break;
226 case SMCMD_QUIT : 239 case SMCMD_QUIT :
227 sendCommand(cmd,seq); 240 if (cmd.eid!=eid)
241 sendCommand(cmd,cmd.seq);
242 else
243 sendCommand(new REPCommand(REP.SMCMD_QUIT_2,
244 sid, eid, seq, 0, ""),seq++);
228 cmds.clear(); 245 cmds.clear();
229 break; 246 break;
230 case SMCMD_QUIT_ACK : 247 case SMCMD_QUIT_ACK :
231 assert(false); 248 assert(false);
232 break; 249 break;
241 break; 258 break;
242 case SMCMD_END_MERGE : 259 case SMCMD_END_MERGE :
243 inputLock = false; 260 inputLock = false;
244 break; 261 break;
245 case SMCMD_QUIT_2 : 262 case SMCMD_QUIT_2 :
246 sendCommand(cmd,cmd.seq); 263 if (cmd.eid!=eid) {
264 sendCommand(cmd,cmd.seq);
265 }
247 running = false; 266 running = false;
248 break; 267 break;
249 case SMCMD_SYNC: 268 case SMCMD_SYNC:
250 // start contents sync with newly joined editor 269 // start contents sync with newly joined editor
251 cmd.cmd = REP.SMCMD_SYNC_ACK; sendCommand(cmd,cmd.seq); 270 cmd.cmd = REP.SMCMD_SYNC_ACK; sendCommand(cmd,cmd.seq);