Mercurial > hg > RemoteEditor > Eclipse
changeset 108:2e649cd44078
*** empty log message ***
author | kent |
---|---|
date | Sun, 23 Dec 2007 11:26:10 +0900 |
parents | 823a45f843a9 |
children | 31f627d5a511 |
files | src/pathfinder/BlockingQnoSeMa/EditorSimulator.java src/pathfinder/BlockingQnoSeMa/NetworkSimulator_withoutSeMa.java src/pathfinder/BlockingQnoSeMa/TestMerger.java src/sample/merge/TranslaterImp1.java |
diffstat | 4 files changed, 76 insertions(+), 104 deletions(-) [+] |
line wrap: on
line diff
--- a/src/pathfinder/BlockingQnoSeMa/EditorSimulator.java Sun Dec 23 10:51:21 2007 +0900 +++ b/src/pathfinder/BlockingQnoSeMa/EditorSimulator.java Sun Dec 23 11:26:10 2007 +0900 @@ -67,16 +67,29 @@ System.out.println("Editor"+eid+" finish."); } + private void sendOneCommand() { + REPCommand[] cmds; + REPCommand cmd = CmdList.poll(); + cmd.eid = eid; + cmds = translater.transSendCmd(cmd); + cmd.setString("this is inserted or replaced by Editor"+cmd.eid+":"+cmd.seq); + + if (isOwner) cmd.setThroughMaster(true); + text.edit(cmd); + cs.write(cmd); + } private void sendAllCommand() { + REPCommand[] cmds; for (REPCommand cmd: CmdList){ cmd.seq = seq; cmd.eid = eid; - cmd.setString("this is inserted or replaced by Editor"+eid+":"+seq); - cmd = translater.transSendCmd(cmd); - if (isOwner) cmd.setThroughMaster(true); - text.edit(cmd); - cs.write(cmd); - seq++; + cmds = translater.transSendCmd(cmd); + cmd.setString("this is inserted or replaced by Editor"+cmd.eid+":"+cmd.seq); + //if (isOwner) cmd.setThroughMaster(true); + for (int i=0; i<cmds.length; i++){ + text.edit(cmd); + cs.write(cmd); + } } // Send Quit Command cs.write( translater.transSendCmd( new REPCommand(REP.SMCMD_QUIT, 0, eid, seq++, 0, 0, "QUIT by Editor"+eid)));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pathfinder/BlockingQnoSeMa/NetworkSimulator_withoutSeMa.java Sun Dec 23 11:26:10 2007 +0900 @@ -0,0 +1,50 @@ +package pathfinder.BlockingQnoSeMa; + +import java.util.LinkedList; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +public class NetworkSimulator_withoutSeMa<P> { + /** Established connection */ + private LinkedList<ChannelSimulator<P>> connectedList; + + public NetworkSimulator_withoutSeMa(){ + connectedList = new LinkedList<ChannelSimulator<P>>(); + } + + /** + * Request to connect. + * Client editor use this method to connect SeMa. + * @param cs + */ + public ChannelSimulator<P> connect(){ + ChannelSimulator<P> cs; + if (connectedList.isEmpty()){ + BlockingQueue<P> q = new LinkedBlockingQueue<P>(); + cs = new ChannelSimulator<P>(q, q); + }else{ + BlockingQueue<P> rq = connectedList.getLast().getWriteQ(); + BlockingQueue<P> wq = new LinkedBlockingQueue<P>(); + connectedList.getFirst().setReadQ(wq); + +/* ChannelSimulator<P> lastcs = connectedList.getLast(); + BlockingQueue<P> rq = lastcs.getWriteQ(); + + BlockingQueue<P> wq = new LinkedBlockingQueue<P>(); + ChannelSimulator<P> firstcs = connectedList.getFirst(); + firstcs.setReadQ(wq); +*/ + cs = new ChannelSimulator<P>(rq, wq); + } + + connectedList.addLast(cs); + return cs; + } + + public boolean checkAllCS(){ + for(ChannelSimulator<P> cs: connectedList){ + if(!cs.readQisEmpty()) return false; + } + return true; + } +}
--- a/src/pathfinder/BlockingQnoSeMa/TestMerger.java Sun Dec 23 10:51:21 2007 +0900 +++ b/src/pathfinder/BlockingQnoSeMa/TestMerger.java Sun Dec 23 11:26:10 2007 +0900 @@ -6,14 +6,10 @@ public class TestMerger { static public int cmdNO[] = { REP.REPCMD_INSERT, REP.REPCMD_REPLACE, REP.REPCMD_DELETE }; - //private int N_editor; - //private int N_packet; private NetworkSimulator<REPCommand> ns; private LinkedList<EditorSimulator> editors; public TestMerger(){ - //N_editor = editor; - //N_packet = packet; ns = new NetworkSimulator<REPCommand>(); editors = new LinkedList<EditorSimulator>(); } @@ -25,16 +21,8 @@ int j = (args.length>1) ? Integer.parseInt(args[1]) : 3; System.out.println("number of Packet = "+i); tm = new TestMerger(); - if(true){ - tm.createEditors(i, j); - }else{ - /* - tm.test2cmd(); - tm.test1cmd(); - tm.test3cmd4editor(); - tm.test0cmd(); - */ - } + + tm.createEditors(i, j); tm.startTest(); tm.printAllTexts(); @@ -78,59 +66,6 @@ editors.add(ee); } } -/* - private void test2cmd(){ - for (int i=0; i<N_editor; i++){ - int j=0; - LinkedList<REPCommand> cmds = new LinkedList<REPCommand>(); - // 各エディタが送信するコマンド列を生成 - - String str = "created by Editor"+i+":"+j; - REPCommand cmd = new REPCommand(REP.REPCMD_INSERT, - 0, i, j++, - 10, //Verify.random(text.size()-1), //size-1? - str.length(), str); - cmds.add( cmd); - str = "created by Editor"+i+":"+j; - cmd = new REPCommand(REP.REPCMD_INSERT, - 0, i, j++, - 10, //Verify.random(text.size()-1), //size-1? - str.length(), str); - cmds.add( cmd); - - EditorSimulator ee = new EditorSimulator(i, ns, cmds, "Editor"+i); - if(i==0) ee.setOwner(true); - editors.add(ee); - } - } - - private void test1cmd(){ - for (int i=0; i<N_editor; i++){ - int j=0; - LinkedList<REPCommand> cmds = new LinkedList<REPCommand>(); - //各エディタが送信するコマンド列を生成 - String str = "Editor"+i+":"+j; - REPCommand cmd = new REPCommand(REP.REPCMD_INSERT, - 0, i, j++, - 10, //Verify.random(text.size()-1), //size-1? - str.length(), str); - cmds.add( cmd); - EditorSimulator ee = new EditorSimulator(i, ns, cmds, "Editor"+i); - if(i==0) ee.setOwner(true); - editors.add(ee); - } - } - - private void test0cmd(){ - for (int i=0; i<N_editor; i++){ - LinkedList<REPCommand> cmds = new LinkedList<REPCommand>(); - //各エディタが送信するコマンド列を生成 - EditorSimulator ee = new EditorSimulator(i, ns, cmds, "Editor"+i); - if(i==0) ee.setOwner(true); - editors.add(ee); - } - } -*/ private void printAllTexts(){ for(EditorSimulator ee: editors){ @@ -138,10 +73,11 @@ ee.getText().printAllText(); } } - +/* private boolean checkCS(){ return ns.checkAllCS(); } +*/ private boolean checkEquality(){ /* Text ee0 = editors.remove().getText(); @@ -153,32 +89,4 @@ } return true; } - /* - private void test3cmd4editor(){ - for (int i=0; i<N_editor; i++){ - int j=0; - LinkedList<REPCommand> cmds = new LinkedList<REPCommand>(); - - if(i==3||i==2||i==1){ - //各エディタが送信するコマンド列を生成 - String str = "Editor"+i+":"+j; - REPCommand cmd = new REPCommand(REP.REPCMD_INSERT, 0, i, j++, 10, str.length(), str); - cmds.add( cmd); - str = "Editor"+i+":"+j; - cmd = new REPCommand(REP.REPCMD_INSERT, 0, i, j++, 10, str.length(), str); - cmds.add( cmd); - str = "Editor"+i+":"+j; - cmd = new REPCommand(REP.REPCMD_INSERT, 0, i, j++, 10, str.length(), str); - cmds.add( cmd); - str = "Editor"+i+":"+j; - cmd = new REPCommand(REP.REPCMD_INSERT, 0, i, j++, 10, str.length(), str); - cmds.add( cmd); - } - - EditorSimulator ee = new EditorSimulator(i, ns, cmds, "Editor"+i); - if(i==0) ee.setOwner(true); - editors.add(ee); - } - } - */ }
--- a/src/sample/merge/TranslaterImp1.java Sun Dec 23 10:51:21 2007 +0900 +++ b/src/sample/merge/TranslaterImp1.java Sun Dec 23 11:26:10 2007 +0900 @@ -28,10 +28,11 @@ * @param cmd * @return translated command. */ - public REPCommand transSendCmd(REPCommand cmd){ + public REPCommand[] transSendCmd(REPCommand cmd){ + REPCommand[] cmds = new REPCommand[1]; sentCmds.add(cmd); unMergedCmds.push(cmd); - return cmd; + return cmds; } /** * Dequeue command cmd that was returned.