# HG changeset patch # User one@firefly.cr.ie.u-ryukyu.ac.jp # Date 1226323603 -32400 # Node ID 18cacd0b3ccf67e55f662fca5b61f2ebabf78915 # Parent 85d01cb6d1335afcc469dd77dc96ed5765cdfdb5 update tags diff -r 85d01cb6d133 -r 18cacd0b3ccf Todo --- a/Todo Mon Nov 10 22:25:51 2008 +0900 +++ b/Todo Mon Nov 10 22:26:43 2008 +0900 @@ -1,8 +1,44 @@ +Fri Oct 31 20:34:35 JST 2008 + +Note: + +そもそも、NOPを付け加えるのがtrafficを増やしている。一周で +は、状態が確定しないので、INSERT/INSERT_ACKで、それぞれ一周、 +計二周廻してやればいい。 + 一週目で、そのコマンドを merge waiting queue にいれる + 二週目のAckコマンドを merge waiting queue と照合して、MERGE_STARTする +で、良いんじゃないか? もちろん、editorにfowardして、戻って来た +時点で判定する。 + Ackが戻って来た時点で、MERGE_STARTとみなして良い。 + 何もなければ、MERGE_ENDを送り、コマンドがあれば、id=-2を送り、 + 最後にMERGE_ENDを送る +なので、MERGE_STARTも必要ない。これで、NOPを付け加えるのと、動作は +同等になる。 + +ACK command はeditorでは実行しない。 + +ついでに、packet に source editor ID も付けるんじゃないか? + +Tue Oct 28 09:50:23 JST 2008 +Todo: (kono) +取り敢えず、動いたみたい。テスト用に、JavaなEditor + 複数のSession Manager ++ Auto Selector があると良いらしい。 + Sun Oct 26 17:36:40 JST 2008 Todo: (kono) GUI のEditorの方が、どれがどれだか、さっぱりわからない。 せめて、sessionを持っているかとか出ないとだめっぽい。 + +Todo: (kono) なんか、NO_NAMEってのが最初に出るらしい。なんだ? + Done: vim のsession 管理バッファがまだ残っていたようです。 + 復活させてもいいかな〜 + +Todo: (kono) +NOPが廻り続けるという症状があるらしい。 + +Todo: (kono) +Optimizer が、まだ、たこならしい。 Sun Oct 26 14:33:51 JST 2008 Todo: (kono) @@ -25,6 +61,7 @@ Todo: (kono) text editor のバッファが増えるバグがあるらしい。 Done: たぶん、quit/quit2が動いてない。close の処理のがまずいせい。 + merge にbugがったので、そのせいかも。 Fri Oct 24 19:00:50 JST 2008 Note: @@ -91,6 +128,7 @@ getAddress で取れたアドレスには、すべて、select/connect する 必要がある。localhost な hostname よりも大域的なhostnameを 優先した方が良い。 + Done: server 側は対応。server側のconnect がまだ。 Todo: dispatch先のEditorの作成 (kono) diff -r 85d01cb6d133 -r 18cacd0b3ccf rep/RoutingTable.java --- a/rep/RoutingTable.java Mon Nov 10 22:25:51 2008 +0900 +++ b/rep/RoutingTable.java Mon Nov 10 22:26:43 2008 +0900 @@ -5,33 +5,38 @@ import rep.handler.REPNode; -public class RoutingTable { +public class RoutingTable extends HashMap{ - HashMap sessionManagers =new HashMap(); + /** + * Routing Table for the tree structure. We keep our child, + * if we don't know send it to the parent. Every ID has + * session manager ID part, so we keep session manager ID + * based path. + */ + private static final long serialVersionUID = 1L; SessionManager manager; - // we don't need this, but we keep it because it is easy. - // editor can be reached using this routing table. public RoutingTable(SessionManager sessionManager) { + super(); manager = sessionManager; } public void add(REPNode forwarder, int smid) { - if (smid>0) sessionManagers.put(smid, forwarder) ; + if (smid>0) put(smid, forwarder) ; } public void remove(REPNode f) { - for(Entry entry:sessionManagers.entrySet()) { - if (entry.getValue()==f) sessionManagers.remove(entry.getKey()); + for(Entry entry:entrySet()) { + if (entry.getValue()==f) remove(entry.getKey()); } } public void removeManager(int smid) { - sessionManagers.remove(smid); + remove(smid); } public REPNode toSessionManager(int eid) { - REPNode next = sessionManagers.get(eid); + REPNode next = get(eid); if (next==null) return manager.smList.parent(); return next; } diff -r 85d01cb6d133 -r 18cacd0b3ccf rep/handler/FirstConnector.java --- a/rep/handler/FirstConnector.java Mon Nov 10 22:25:51 2008 +0900 +++ b/rep/handler/FirstConnector.java Mon Nov 10 22:26:43 2008 +0900 @@ -13,8 +13,14 @@ public class FirstConnector extends Forwarder { - - + /** + * Handle first incoming packet, and determines master editor or + * client editor ( or possibly inter-connected session manager). + * We cannot send anything but sm_join(). + * + * @param manager + * @param channel + */ public FirstConnector(SessionManager manager, REPSocketChannel channel) { super(manager,channel);