Mercurial > hg > RemoteEditor > REPSessionManager
diff test/sematest/TestEditor.java @ 313:0585fd2410b8 single-insert-command
Single Insert Command worked.
author | kono |
---|---|
date | Sun, 05 Oct 2008 22:36:24 +0900 |
parents | c5be84d53c7f |
children | 20fb70068089 |
line wrap: on
line diff
--- a/test/sematest/TestEditor.java Sun Oct 05 11:39:18 2008 +0900 +++ b/test/sematest/TestEditor.java Sun Oct 05 22:36:24 2008 +0900 @@ -26,6 +26,7 @@ private InetSocketAddress semaIP; private REPLogger ns; private int seq = 0; + private int prevSeq = 0; public Text text; public LinkedList<REPCommand> cmds; private int eid = 0; @@ -34,7 +35,6 @@ boolean running = true; long timeout = 1; private String name; - private REPCommand nop = new REPCommand(REP.REPCMD_NOP,0,0,0,0,""); private boolean inputLock=false; public boolean detached=false; public boolean master=false; @@ -179,6 +179,7 @@ case SMCMD_JOIN: case SMCMD_PUT: sendCommand(cmd,seq++); + prevSeq = seq; /* * To prevent confusion, stop user input until the ack */ @@ -194,7 +195,8 @@ } - private void sendCommand(REPCommand cmd,int seq) { + private void sendCommand(REPCommand cmd1,int seq) { + REPCommand cmd = new REPCommand(cmd1); cmd.setSEQID(seq); cmd.setEID(eid); cmd.setSID(sid); @@ -208,29 +210,32 @@ 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); - // sendCommand(nop); session manager do this for me 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(); cmd.setString(del); sendCommand(cmd,cmd.seq); - // sendCommand(nop); session manager do this for me break; case REPCMD_DELETE_ACK : assert(false); break; - case REPCMD_CLOSE : + case REPCMD_NOP : + if (cmd.eid==REP.MERGE_EID.id) break; + addNop(); + sendCommand(cmd,cmd.seq); + break; case REPCMD_CLOSE : case REPCMD_CLOSE_2 : assert(false); break; - case REPCMD_NOP : - sendCommand(cmd,cmd.seq); - sendCommand(nop,seq++); - break; + case SMCMD_JOIN_ACK : sid = cmd.sid; eid = cmd.eid; @@ -283,4 +288,12 @@ break; } } + + 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++); + prevSeq = seq; + } }