changeset 370:46c95d8885ad

fix put_ack in single server test.
author kono
date Tue, 21 Oct 2008 22:40:30 +0900
parents 7d21eb209e27
children 97aa54c9afe6
files Todo rep/SessionManager.java
diffstat 2 files changed, 30 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/Todo	Tue Oct 21 20:37:05 2008 +0900
+++ b/Todo	Tue Oct 21 22:40:30 2008 +0900
@@ -1,6 +1,24 @@
+Mon Oct 20 16:38:39 JST 2008
+
+Todo: (kono)
+routing で put の時には、上に上がるだけで良いのだが、下に行くときには、
+routing table を持って行く必要がある。ということは、session list を
+つける必要があるということだね。でも、tree だから、
+
+  自分の直下んあるもの以外は、上に送る
+
+で良いのか...
+
+Todo: (kono)
+put/put_ack は、udpateを兼ねる必要があるらしい。そうでないと、session list
+が広まらない。
+
+session list 中のlocalでないeditorをselectするした場合は、sessionManager
+の方に再送してやれば良い。
+
 Mon Oct 20 10:22:02 JST 2008
 
-Tdo: (kono)
+Todo: (kono)
 Inter-session での、editor の削除、master でないeditorのclose/quit。
 
 Sun Oct 19 21:23:27 JST 2008
--- a/rep/SessionManager.java	Tue Oct 21 20:37:05 2008 +0900
+++ b/rep/SessionManager.java	Tue Oct 21 22:40:30 2008 +0900
@@ -408,7 +408,6 @@
 				session.addForwarder(editor);
 				sendUpdate(session.getSID());
 				sendCommand.setCMD(REP.SMCMD_JOIN_ACK);
-				return;
 			} else {
 				// We have a session, but joined editor is on the other sm.
 				// SELECT_ACK is sent to the session ring to
@@ -421,12 +420,11 @@
 				f.setHost(myHost);
 				f.setSID(sid);
 				session.addForwarder(f); // f.next is set up here.
-				sendCommand.setSID(sid);
-				sendCommand.string = session.getName();
-				sendCommand.setEID(eid);
-				editor.send(sendCommand);
-				return;
 			}
+			sendCommand.setSID(sid);
+			sendCommand.string = session.getName();
+			sendCommand.setEID(eid);
+			editor.send(sendCommand);
 		}else {
 			Forwarder next;
 			if (editor.channel==null) {
@@ -617,17 +615,17 @@
 		{
 			// first connection or forwarded command
 			routingTable.add(forwarder,getSMID(command.eid));
-			if(isMaster()) {
-				command.setCMD(REP.SMCMD_PUT_ACK);
-				command.string = command.string;
-				command.setEID(command.eid);
-				command.setSID(command.sid);
-				smList.sendToSlaves(command);
-				registEditor(forwarder,command);
+			REPCommand ack = new REPCommand(command); ack.setCMD(REP.SMCMD_PUT_ACK);
+ 			if(isMaster()) {
+				smList.sendToSlaves(ack);
+				registEditor(forwarder,ack);
 			} else {
 				smList.sendToMaster(command);
 				// registEditor will be done by SMCMD_PUT_ACK
 			}
+ 			if (forwarder.isDirect()) {
+ 				forwarder.send(ack);
+ 			}
 			updateGUI();
 	
 		}