Mercurial > hg > RemoteEditor > REPSessionManager
comparison rep/handler/Editor.java @ 445:22a741c1fa2d
fix unMergedCmds in endMerge
author | one |
---|---|
date | Sat, 18 Sep 2010 00:10:57 +0900 |
parents | 97593c486db6 |
children | ed97273477a0 |
comparison
equal
deleted
inserted
replaced
444:97593c486db6 | 445:22a741c1fa2d |
---|---|
21 protected LinkedList<PacketSet> waitingCommandInMerge= new LinkedList<PacketSet>(); | 21 protected LinkedList<PacketSet> waitingCommandInMerge= new LinkedList<PacketSet>(); |
22 private REPCommand quit2=null; | 22 private REPCommand quit2=null; |
23 private REPCommand preMergeCommand; | 23 private REPCommand preMergeCommand; |
24 private boolean merging; | 24 private boolean merging; |
25 public static boolean noMergeMode=false; | 25 public static boolean noMergeMode=false; |
26 static final boolean doOptimize = true; | 26 static final boolean doOptimize = false; |
27 | 27 |
28 public Editor(SessionManager manager,int editorNo){ | 28 public Editor(SessionManager manager,int editorNo){ |
29 // no translator case | 29 // no translator case |
30 super(manager, null); | 30 super(manager, null); |
31 } | 31 } |
39 translator = new Translator(eid,optimizer); | 39 translator = new Translator(eid,optimizer); |
40 } | 40 } |
41 | 41 |
42 /* | 42 /* |
43 * Merge Protocol | 43 * Merge Protocol |
44 (0) Editor へのコマンドは、ack 以外は直接 Editor へ送られてしまう。(next.send(cmd)) | |
45 Editor から返ってくるコマンドをtranslatorが処理する。 | |
44 (1) Editor CommandをSession Ring 上に流し、それが戻って来るまでに、他のEditorから | 46 (1) Editor CommandをSession Ring 上に流し、それが戻って来るまでに、他のEditorから |
45 受け取った Editor Command をキューに入れておく。 | 47 受け取った Editor Command をキューに入れておく。 |
46 (2) 戻って来たタイミングで、キュー上のEditor Commandを、eid とCommandの | 48 (2) 戻って来たタイミングで、キュー上のEditor Commandを、eid とCommandの |
47 順序を基にソートする。(self merge) | 49 順序を基にソートする。(self merge) |
48 (3) 他のEditorにソートのタイミングを与えるために、Editor Command の | 50 (3) 他のEditorにソートのタイミングを与えるために、Editor Command の |
292 if (quit2!=null) checkQuit(); | 294 if (quit2!=null) checkQuit(); |
293 } | 295 } |
294 | 296 |
295 | 297 |
296 private void endMerge() { | 298 private void endMerge() { |
299 translator.endMerge(); | |
297 REPCommand mergeEnd = new REPCommand(REP.SMCMD_END_MERGE,sid,eid,seq(),0,""); | 300 REPCommand mergeEnd = new REPCommand(REP.SMCMD_END_MERGE,sid,eid,seq(),0,""); |
298 send(mergeEnd); | 301 send(mergeEnd); |
299 sentList.remove(0); | 302 sentList.remove(0); |
300 if (preMergeCommand.eid==eid) { | 303 if (preMergeCommand.eid==eid) { |
301 // First Phase End, send ACK | 304 // First Phase End, send ACK |