changeset 360:b25f832f875d

*** empty log message ***
author kono
date Sun, 19 Oct 2008 20:30:52 +0900
parents fa041bae35f1
children 65c6d12a5835
files rep/FirstConnector.java rep/NullForwarder.java rep/Session.java rep/SessionManager.java rep/SessionManagerList.java
diffstat 5 files changed, 67 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/rep/FirstConnector.java	Sun Oct 19 19:24:38 2008 +0900
+++ b/rep/FirstConnector.java	Sun Oct 19 20:30:52 2008 +0900
@@ -35,6 +35,9 @@
 			//   1対1でない場合は、multiplexerを挿めば良い
 			Editor editor = manager.newEditor(channel);
 			editor.setHost(manager.myHost);
+			command.eid = editor.eid;
+			command.sid = -1;
+			editor.setSID(-1);
 			fw = editor;
 			break;
 		}
@@ -44,8 +47,11 @@
 			//  session manager IDが付いているので、global unique
 			Editor editor = manager.newEditor(channel);
 			Session session = manager.newSession(editor);
+			session.setName(command.string);
+			editor.setName(command.string);
 			editor.setSID(session.getSID());
-			editor.setHost(manager.myHost);
+			command.eid = editor.eid;
+			command.sid = editor.sid;
 			fw = editor;
 			break;
 		}
@@ -64,7 +70,7 @@
 		//myHost を設定。
 		//立ち上げ時にやるとlocalhostしか取れない
 		if(manager.myHost == null) manager.setMyHostName(getLocalHostName());
-
+		fw.setHost(manager.myHost);
 		fw.setMode(command.cmd);
 		manager.registerChannel(channel, fw);
 		manager.sessionManage(fw, command);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rep/NullForwarder.java	Sun Oct 19 20:30:52 2008 +0900
@@ -0,0 +1,41 @@
+package rep;
+
+import java.io.IOException;
+
+import rep.channel.REPSelectionKey;
+import rep.channel.REPSocketChannel;
+
+public class NullForwarder extends Forwarder {
+
+	public NullForwarder(SessionManager manager) {
+		super(manager);
+	}
+
+	public void send(REPCommand command) {
+		
+	}
+	public void cancel(REPSocketChannel<REPCommand> socketChannel) {
+
+	}
+
+	public void handle(REPSelectionKey<REPCommand> key) throws IOException {
+
+	}
+
+	public boolean manage(REPCommand command) {
+		return true;
+	}
+
+	public boolean isEditor() {
+		return false;
+	}
+	
+	public boolean isForwarder() {
+		return false;
+	}
+
+	public boolean isDirect() {
+		return false;
+	}
+
+}
--- a/rep/Session.java	Sun Oct 19 19:24:38 2008 +0900
+++ b/rep/Session.java	Sun Oct 19 20:30:52 2008 +0900
@@ -59,9 +59,6 @@
 		return values();
 	}
 	
-	public String toString(){
-		return sessionName;
-	}
 	public int getSID() {
 		return sessionID;
 	}
@@ -164,5 +161,16 @@
 		}	
 	}
 	
+	@Override
+	public String toString() {
+		String s = super.toString();
+		return s+" sid="+sessionID+" "+sessionName+" master="+
+			((masterEditor==null)?"null":masterEditor.toString());
+	}
+
+
+	public void setName(String string) {
+		sessionName = string;
+	}
 
 }
--- a/rep/SessionManager.java	Sun Oct 19 19:24:38 2008 +0900
+++ b/rep/SessionManager.java	Sun Oct 19 20:30:52 2008 +0900
@@ -387,6 +387,7 @@
 	public Session newSession(Forwarder master) {
 		int sid= makeID(sessionList.newSessionID());
 		Session session = new Session(sid, master);
+		sessionList.put(sid, session);
 		return session;
 	}
 
@@ -475,6 +476,7 @@
 				REPCommand ackCommand = new REPCommand();
 				ackCommand.setCMD(REP.SMCMD_JOIN_ACK);
 				ackCommand.setEID(command.eid);
+				ackCommand.setSID(command.sid);
 				ackCommand.string = command.string;
 				smList.sendToSlaves(ackCommand);
 				registEditor(forwarder,ackCommand);
@@ -482,7 +484,7 @@
 				routingTable.add(forwarder,getSMID(command.eid),command.sid);
 				smList.sendToMaster(command);
 			}
-
+			updateGUI();
 		}
 	
 		break;
@@ -490,6 +492,7 @@
 		case SMCMD_JOIN_ACK:
 		case SMCMD_PUT_ACK:
 			registEditor(forwarder,command);
+			updateGUI();
 			break;
 	
 		case SMCMD_PUT:
@@ -506,6 +509,7 @@
 				routingTable.add(forwarder,getSMID(command.eid),command.sid);
 				smList.sendToMaster(command);
 			}
+			updateGUI();
 	
 		}
 		break;
@@ -631,7 +635,6 @@
 		editor.setSID(command.sid);
 		if (!editorList.hasEid(command.eid)) {
 			editorList.add(editor);
-			updateGUI();
 		}
 		// we don't join ack to the direct linked editor. We
 		// have to wait select command
--- a/rep/SessionManagerList.java	Sun Oct 19 19:24:38 2008 +0900
+++ b/rep/SessionManagerList.java	Sun Oct 19 20:30:52 2008 +0900
@@ -10,7 +10,7 @@
 	private static final long serialVersionUID = 1L;
 	private int mySMID=0;
 	private int smid_root=0;
-	private Forwarder parent=null;
+	private Forwarder parent=new NullForwarder(null);
 	private LinkedList<Forwarder> waiting= new LinkedList<Forwarder>();
 
 
@@ -29,7 +29,7 @@
 	}
 
 	public boolean isMaster() {
-		return parent==null;
+		return !parent.isForwarder();
 	}
 
 	public int addNewSessionManager(Forwarder fw,REPCommand receivedCommand) {