changeset 393:18cacd0b3ccf

update tags
author one@firefly.cr.ie.u-ryukyu.ac.jp
date Mon, 10 Nov 2008 22:26:43 +0900
parents 85d01cb6d133
children 1d5b608f39da
files Todo rep/RoutingTable.java rep/handler/FirstConnector.java
diffstat 3 files changed, 60 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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)
 
--- 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<Integer,REPNode>{
 
-	HashMap<Integer,REPNode> sessionManagers =new HashMap<Integer,REPNode>();
+	/**
+	 *    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<Integer, REPNode> entry:sessionManagers.entrySet()) {
-			if (entry.getValue()==f) sessionManagers.remove(entry.getKey());
+		for(Entry<Integer, REPNode> 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;
 	}
--- 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<REPCommand> channel) {
 		super(manager,channel);