changeset 421:f8916a96a373

(no commit message)
author one
date Sat, 06 Jun 2009 14:42:40 +0900
parents 5c95a9020e31
children 5e18919011a8
files Todo rep/REPCommandPacker.java rep/handler/Translator.java test/RepCommandOptimizeTest.java test/mergertest/EditorSimulatorImpl.java test/sematest/TestEditor.java
diffstat 6 files changed, 44 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/Todo	Fri Feb 13 19:13:50 2009 +0900
+++ b/Todo	Sat Jun 06 14:42:40 2009 +0900
@@ -1,9 +1,22 @@
+Wed Nov 26 15:15:16 JST 2008
+
+Ring 構造なので、一部のeidtorで止まると全体が止まってしまう。
+(非同期なのでeditorが止まることはない) これは、そういう設計
+なので仕方がないんだが応答しないEditor/SesisionManagerを
+切り離す機構は必要だろう。
+
+このTodo list のmaintenanceをEclipse側で出来ないの? Perl Script でも
+でも良いけど。
+
 Wed Nov 26 08:44:29 JST 2008
 
 Todo:
 QUITで、まだ、処理があるのにEditorが止まってしまう状況が
 あるらしい。
 
+Done:
+   syncText 中にquitが来ていたかららしい。
+
 Tue Nov 25 09:13:42 JST 2008
 
 Todo: 
@@ -79,6 +92,7 @@
 
 Todo: (kono)
 NOPが廻り続けるという症状があるらしい。
+    Done: nop procotol は削除
 
 Todo: (kono)
 Optimizer が、まだ、たこならしい。
@@ -86,6 +100,7 @@
 Sun Oct 26 14:33:51 JST 2008
 Todo: (kono)
 quit/close 処理が間違っているらしい。
+    Done: quit は直しました
 
 Sat Oct 25 10:52:05 JST 2008
 Todo: (kono)
@@ -164,6 +179,8 @@
 
 Todo: (kono)
 Inter-session での、editor の削除、master でないeditorのclose/quit。
+	Done: Wed Nov 26 15:19:07 JST 2008
+	動いているらしい
 
 Sun Oct 19 21:23:27 JST 2008
 
--- a/rep/REPCommandPacker.java	Fri Feb 13 19:13:50 2009 +0900
+++ b/rep/REPCommandPacker.java	Sat Jun 06 14:42:40 2009 +0900
@@ -91,7 +91,11 @@
 		int seqid = header.getInt();
 		int lineno = header.getInt();
 		int textsiz = header.getInt();
-		
+
+		/**
+		 * We should avoid large reading here. Large command should be
+		 * broke in smaller one. It should be easy.
+		 */
 		if (textsiz>TEXTSIZELIMIT||textsiz<0) {
 			// corrupted packet
 			throw new IOException();
--- a/rep/handler/Translator.java	Fri Feb 13 19:13:50 2009 +0900
+++ b/rep/handler/Translator.java	Sat Jun 06 14:42:40 2009 +0900
@@ -9,6 +9,7 @@
 import rep.REP;
 import rep.REPCommand;
 import rep.SessionManager;
+import rep.channel.REPLogger;
 import rep.optimizers.REPCommandOptimizer;
 
 public class Translator {
@@ -18,6 +19,7 @@
 	private LinkedList<REPCommand> unMergedCmds;
 	public LinkedList<REPCommand> sentMergedList;
 	private LinkedList<REPCommand> mergeAgainList;
+	public REPLogger logger = SessionManager.logger;
 	boolean merge_mode = false;
 
 	public Translator(int _eid,REPCommandOptimizer opt){
@@ -53,6 +55,7 @@
 	 * @param cmd
 	 */
 	public boolean catchOwnCommand(REPNode editor){
+		logger.writeLog("beforeMarge:"+unMergedCmds);
 		LinkedList<REPCommand> output = new LinkedList<REPCommand>();
 		LinkedList<REPCommand> cmds = new LinkedList<REPCommand>();
 				//スタック上にあるコマンドを全部undoコマンドにする
@@ -68,6 +71,8 @@
 		/* 残ったコマンドも再び実行させるが、まだマージされてないのでunMergedにも入れる  */
 		output.addAll(cmds);
 		unMergedCmds.addAll(cmds);
+		logger.writeLog("outputMarge:"+output);
+		logger.writeLog("afterMarge:"+unMergedCmds);
 		return optimizedSend(editor,output);
 	}
 
@@ -203,7 +208,7 @@
 //			default: assert false;
 //			}
 //		}
-		SessionManager.logger.writeLog("MergeAgain ret="+returnCommand.size());
+		logger.writeLog("MergeAgain ret="+returnCommand.size());
 //				+" increment="+count);
 		mergeAgainList.clear();
 		optimizedSend(editor, returnCommand);
--- a/test/RepCommandOptimizeTest.java	Fri Feb 13 19:13:50 2009 +0900
+++ b/test/RepCommandOptimizeTest.java	Sat Jun 06 14:42:40 2009 +0900
@@ -1,11 +1,11 @@
 package test;
 
-import static org.junit.Assert.*;
+// import static org.junit.Assert.*;
 
 import java.util.LinkedList;
 import java.util.List;
 
-import org.junit.Test;
+// import org.junit.Test;
 
 import rep.REPCommand;
 import rep.REP;
@@ -95,7 +95,7 @@
 		t.main0();
 	}
 
-	@Test
+	// @Test
 	public void main0(){
 	
 		REPCommandOptimizer rco;
@@ -128,7 +128,7 @@
 		// this command list applied to other text, and print it.
 		text2.edit(result);
 		// check two texts.
-		assertEquals(text1.equals(text2),true);
+		// assertEquals(text1.equals(text2),true);
 		if(!text1.equals(text2)){
 			System.out.println("two texts not match");
 			print(cmdlist, result, text1, text2);
@@ -162,4 +162,4 @@
 	}
 
 	}
-	
\ No newline at end of file
+	
--- a/test/mergertest/EditorSimulatorImpl.java	Fri Feb 13 19:13:50 2009 +0900
+++ b/test/mergertest/EditorSimulatorImpl.java	Sat Jun 06 14:42:40 2009 +0900
@@ -7,7 +7,7 @@
 
 public class EditorSimulatorImpl extends EditorSimulator {
 
-	private Translator translator;
+	public Translator translator;
 
 	public EditorSimulatorImpl(int sid, int eid) {
 		this.eid = eid;
--- a/test/sematest/TestEditor.java	Fri Feb 13 19:13:50 2009 +0900
+++ b/test/sematest/TestEditor.java	Sat Jun 06 14:42:40 2009 +0900
@@ -41,17 +41,17 @@
 	public boolean master=false;
 	REPCommand quit=null;
 	private int syncCounter=0;
-	private boolean hasInputLock=false;
+	private boolean hasInputLock=true;
 	private int port;
 	private REPSelector<REPCommand> selector;
-	private boolean syncEnable=true;
+	private boolean syncEnable=false;
 
 
 	public TestEditor(String name, String _host,int _port, boolean master){
 		super(name);
 		LinkedList<REPCommand>cmdList = new LinkedList<REPCommand>();
 		String[] txts = {
-			"aaa", "bbb", // "ccc", "ddd", "eee",
+			//"aaa", "bbb", // "ccc", "ddd", "eee",
 		};	
 		port = _port;
 		semaIP = new InetSocketAddress(_host, _port);
@@ -63,13 +63,13 @@
 			text = new Text(txts);
 			cmds.add(new REPCommand(REP.SMCMD_PUT,0,0,0,0,name+"-file"));
 			cmds.add(new REPCommand(REP.REPCMD_INSERT_USER,0,0,0,0,"m0"));
-			cmds.add(new REPCommand(REP.REPCMD_DELETE_USER,0,0,0,0,"m0"));
+			cmds.add(new REPCommand(REP.REPCMD_INSERT_USER,0,0,0,0,"m1"));
 			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));
 			cmds.add(new REPCommand(REP.REPCMD_INSERT_USER,0,0,0,0,"c0"));
-			cmds.add(new REPCommand(REP.REPCMD_DELETE_USER,0,0,0,0,"c0"));
+			cmds.add(new REPCommand(REP.REPCMD_INSERT_USER,0,0,0,0,"c1"));
 		}
 	}
 	
@@ -300,6 +300,7 @@
 				sendCommand(cmd);
 			}
 			running = false;
+			dumpText();
 			break;
 		case SMCMD_SYNC:
 			// start contents sync with newly joined editor
@@ -318,6 +319,10 @@
 	}
 
 
+	private void dumpText() {
+		ns.writeLog("Final "+text);
+	}
+
 	public int getPort() {
 		return port;
 	}