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.