Mercurial > hg > RemoteEditor > REPSessionManager
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); |