Mercurial > hg > RemoteEditor > REPSessionManager
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; }