changeset 156:7ebd30e5e385 simulator-2008-8-26

*** empty log message ***
author pin
date Mon, 25 Aug 2008 15:53:03 +0900
parents 0dfb6413a31e
children 1a2269c820df
files src/pathfinder/mergetest/EditorSimulatorWithoutMerger.java src/pathfinder/mergetest/SessionManagerSimulatorWithMerger.java src/pathfinder/mergetest/UsersSimulator.java src/sample/merge/TranslaterImp1.java
diffstat 4 files changed, 25 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/pathfinder/mergetest/EditorSimulatorWithoutMerger.java	Sun Aug 24 18:08:10 2008 +0900
+++ b/src/pathfinder/mergetest/EditorSimulatorWithoutMerger.java	Mon Aug 25 15:53:03 2008 +0900
@@ -63,6 +63,7 @@
 				} else {
 
 					ns.writeLog("\t\tEditor"+eid+" edit text and pass Cmd. " + " : " + cmd, 3);
+					//if(eid == 2)ns.writeLog("\t\tEditor"+eid+" edit text and pass Cmd. " + " : " + cmd, 1);
 					text.edit(cmd);
 					cs.write(new REPCommand(cmd));
 				}
--- a/src/pathfinder/mergetest/SessionManagerSimulatorWithMerger.java	Sun Aug 24 18:08:10 2008 +0900
+++ b/src/pathfinder/mergetest/SessionManagerSimulatorWithMerger.java	Mon Aug 25 15:53:03 2008 +0900
@@ -110,6 +110,8 @@
 			//quitコマンドが一周してきた
 			if(editorList.get(nextEditor.eid).isEmpty()) {
 				command.setCMD(REP.SMCMD_QUIT_2);
+			}else{
+				System.out.println("has Unmerged Commands.");
 			}
 		}
 	}
@@ -135,8 +137,15 @@
 		if(command.eid == eid){
 			if(checkOwnCommand(command)){
 				//エディタからの編集コマンドが戻ってきた場合、マージしてエディタへ反映
+				if(eid == 2)System.out.println("returned Editor Command : " + command);
 				REPCommand[] cmds = editorList.get(eid).catchOwnCommand(command);
 				for(REPCommand cmd : cmds){
+					try {
+						Thread.sleep(50);
+					} catch (InterruptedException e) {
+						// TODO Auto-generated catch block
+						e.printStackTrace();
+					}
 					REPCommand tmp2 = new REPCommand(cmd);
 					tmp2.eid = REP.MERGE_EID;
 					channel.write(pack(tmp2));
@@ -144,18 +153,19 @@
 
 			}else{
 				//エディタからの新たな編集コマンド
+				if(eid == 2)System.out.println("new Editor Command : " + command);
 				editorList.get(eid).transSendCmd(command);
 				nextChannel.write(pack(command));
 			}
 			
 		}else if(command.eid == REP.MERGE_EID){
 			//マージのときにエディタからの割り込みがないか確認
-			//if(eid == 2)System.out.println("		Merged Command : " + command);
+			if(eid == 2)System.out.println("	Merged Command : " + command);
 			if(editorList.get(eid).checkMergeConflict(command)){
 				LinkedList<REPCommand> againList = editorList.get(eid).getMergeAgain();
 				for(REPCommand againCommand : againList){
 					channel.write(pack(againCommand));
-					System.out.println("Remerge : " + againCommand);
+					if(eid == 2)System.out.println("		reMerge : " + againCommand);
 				}
 			}
 			
--- a/src/pathfinder/mergetest/UsersSimulator.java	Sun Aug 24 18:08:10 2008 +0900
+++ b/src/pathfinder/mergetest/UsersSimulator.java	Mon Aug 25 15:53:03 2008 +0900
@@ -19,6 +19,12 @@
 		ns.writeLog("UsersSimulator start.", 1);
 		ChannelSimulator<REPCommand> channel = ns.getAcceptedSession(eid);
 		while(cmds.size()>0){
+			try {
+				Thread.sleep(1000);
+			} catch (InterruptedException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
 			REPCommand cmd0 = createCmd();
 			channel.write(cmd0);
 		}
--- a/src/sample/merge/TranslaterImp1.java	Sun Aug 24 18:08:10 2008 +0900
+++ b/src/sample/merge/TranslaterImp1.java	Mon Aug 25 15:53:03 2008 +0900
@@ -90,7 +90,9 @@
 		//REPCommand retCmd = cmd.clone();
 		String str = new String(cmd.string);
 		REPCommand retCmd = new REPCommand(cmd.cmd, cmd.sid, cmd.eid, cmd.seq, cmd.lineno, str.length(), str);
-
+		
+		retCmd.eid = REP.MERGE_EID;
+		
 		if (cmd.cmd==REP.REPCMD_INSERT) retCmd.cmd=REP.REPCMD_DELETE;
 		else if (cmd.cmd==REP.REPCMD_DELETE) retCmd.cmd=REP.REPCMD_INSERT;
 		else if (cmd.cmd == REP.REPCMD_REPLACE) retCmd = createUndoReplace(retCmd);
@@ -258,7 +260,8 @@
 	public LinkedList<REPCommand> getMergeAgain() {
 		LinkedList<REPCommand> returnCommand = new LinkedList<REPCommand>();
 		for(int i = 0; i < mergeAgainList.size(); i++){
-			returnCommand.add(createUndo(mergeAgainList.getLast()));
+			//eid = REP.MEGE_EID
+			returnCommand.add(createUndo(mergeAgainList.get(mergeAgainList.size() - i -1)));
 		}
 		for(REPCommand command : mergeAgainList){
 			if(command.eid == REP.MERGE_EID){
@@ -267,6 +270,7 @@
 		}
 		for(REPCommand command : mergeAgainList){
 			if(command.eid == eid){
+				command.eid = REP.MERGE_EID;
 				returnCommand.add(command);
 			}
 		}