Mercurial > hg > RemoteEditor > REPSessionManager
diff test/sematest/TestEditor.java @ 315:20fb70068089
*** empty log message ***
author | kono |
---|---|
date | Mon, 06 Oct 2008 18:58:49 +0900 |
parents | 0585fd2410b8 |
children | dc57e24ea3df |
line wrap: on
line diff
--- a/test/sematest/TestEditor.java Mon Oct 06 10:34:37 2008 +0900 +++ b/test/sematest/TestEditor.java Mon Oct 06 18:58:49 2008 +0900 @@ -32,6 +32,7 @@ private int eid = 0; private int sid = 0; REPSocketChannel<REPCommand> channel; + REPCommand nop = new REPCommand(REP.REPCMD_NOP, 0, 0, 0, 0, ""); boolean running = true; long timeout = 1; private String name; @@ -58,7 +59,7 @@ cmds.add(new REPCommand(REP.SMCMD_PUT,0,0,0,0,name+"-file")); cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"m0")); //cmds.add(new REPCommand(REP.REPCMD_DELETE,0,0,0,0,"m0")); - //cmds.add(new REPCommand(REP.SMCMD_QUIT,0,0,0,0,"")); + cmds.add(new REPCommand(REP.SMCMD_QUIT,0,0,0,0,"")); } else { text = new Text(new String[0]); cmds.add(new REPCommand(REP.SMCMD_JOIN,0,0,0,0,name)); @@ -145,8 +146,8 @@ int i=syncCounter-1; REPCommand del = new REPCommand(REP.REPCMD_DELETE,sid,eid,0,i, text.get(i)); REPCommand ins = new REPCommand(REP.REPCMD_INSERT,sid,eid,0,i, text.get(i)); - sendCommand(del,seq++); - sendCommand(ins,seq++); + sendCommand(del); + sendCommand(ins); syncCounter++; } } @@ -160,12 +161,12 @@ switch(cmd.cmd) { case REPCMD_INSERT: text.insert(cmd.lineno, cmd.string); - sendCommand(cmd,seq++); + sendCommand(cmd); break; case REPCMD_DELETE: String del = text.delete(cmd.lineno); cmd.setString(del); - sendCommand(cmd,seq++); + sendCommand(cmd); break; case SMCMD_QUIT: /* @@ -174,11 +175,11 @@ * clients simply disconnect from the session manager. */ cmds.clear(); - sendCommand(cmd,seq++); + sendCommand(cmd); break; case SMCMD_JOIN: case SMCMD_PUT: - sendCommand(cmd,seq++); + sendCommand(cmd); prevSeq = seq; /* * To prevent confusion, stop user input until the ack @@ -195,42 +196,48 @@ } - private void sendCommand(REPCommand cmd1,int seq) { + private void sendCommand(REPCommand cmd1) { REPCommand cmd = new REPCommand(cmd1); - cmd.setSEQID(seq); + cmd.setSEQID(seq++); cmd.setEID(eid); cmd.setSID(sid); ns.writeLog(name +" send "+cmd); channel.write(cmd); } + private void forwardCommand(REPCommand cmd1) { + REPCommand cmd = new REPCommand(cmd1); + ns.writeLog(name +" forward "+cmd); + channel.write(cmd); + } + private void handle(REPCommand cmd) { if (cmd==null) return; ns.writeLog(name +": read "+cmd); switch(cmd.cmd) { case REPCMD_INSERT : text.insert(cmd.lineno, cmd.string); - if (cmd.eid==REP.MERGE_EID.id) break; - addNop(); - sendCommand(cmd,cmd.seq); + if (cmd.eid!=REP.MERGE_EID.id) + addNop(); + forwardCommand(cmd); break; case REPCMD_INSERT_ACK : assert(false); break; case REPCMD_DELETE : String del = text.delete(cmd.lineno); - if (cmd.eid==REP.MERGE_EID.id) break; - addNop(); + if (cmd.eid!=REP.MERGE_EID.id) + addNop(); cmd.setString(del); - sendCommand(cmd,cmd.seq); + forwardCommand(cmd); break; case REPCMD_DELETE_ACK : assert(false); break; case REPCMD_NOP : - if (cmd.eid==REP.MERGE_EID.id) break; - addNop(); - sendCommand(cmd,cmd.seq); + if (cmd.eid!=REP.MERGE_EID.id) + addNop(); + forwardCommand(cmd); break; case REPCMD_CLOSE : case REPCMD_CLOSE_2 : assert(false); @@ -247,13 +254,12 @@ inputLock = false; break; case SMCMD_QUIT : - if (false) { + if(true) return; if (cmd.eid!=eid) - sendCommand(cmd,cmd.seq); + forwardCommand(cmd); else sendCommand(new REPCommand(REP.SMCMD_QUIT_2, - sid, eid, seq, 0, ""),seq++); - } + sid, eid, seq, 0, "")); cmds.clear(); break; case SMCMD_QUIT_ACK : @@ -263,7 +269,7 @@ // lock user input during merge (optional) inputLock = hasInputLock; cmd.cmd = REP.SMCMD_START_MERGE_ACK; - sendCommand(cmd,seq++); + sendCommand(cmd); break; case SMCMD_START_MERGE_ACK : assert(false); @@ -273,13 +279,14 @@ break; case SMCMD_QUIT_2 : if (cmd.eid!=eid) { - sendCommand(cmd,cmd.seq); + forwardCommand(cmd); } running = false; break; case SMCMD_SYNC: // start contents sync with newly joined editor - cmd.cmd = REP.SMCMD_SYNC_ACK; sendCommand(cmd,cmd.seq); + cmd.cmd = REP.SMCMD_SYNC_ACK; + forwardCommand(cmd); if (cmd.eid==eid) syncCounter = 1; break; @@ -292,8 +299,7 @@ private void addNop() { if (seq!=prevSeq) return; // We haven't send any command, add nop before retransmition. - REPCommand nop = new REPCommand(REP.REPCMD_NOP, sid, eid, seq, 0, ""); - sendCommand(nop,seq++); + sendCommand(nop); prevSeq = seq; } }