changeset 83:9381b4734a0b

*** empty log message ***
author pin
date Fri, 21 Dec 2007 13:55:24 +0900
parents 4bb583553a42
children 54334d83194a
files rep/Editor.java rep/REP.java rep/SessionList.java rep/SessionManager.java
diffstat 4 files changed, 63 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/rep/Editor.java	Tue Dec 11 14:26:13 2007 +0900
+++ b/rep/Editor.java	Fri Dec 21 13:55:24 2007 +0900
@@ -78,4 +78,8 @@
 		send.send(repCmd);
 	}
 
+	public void setChannel(SocketChannel channel) {
+		myChannel = channel;
+	}
+
 }
--- a/rep/REP.java	Tue Dec 11 14:26:13 2007 +0900
+++ b/rep/REP.java	Fri Dec 21 13:55:24 2007 +0900
@@ -35,4 +35,6 @@
 	public static final int SMCMD_UPDATE_ACK = 66;
 	public static final int SMCMD_UPDATE_UP = 67;		//obsolete
 	public static final int SMCMD_UPDATE_DOWN = 68;		//obsolete
+	public static final int SMCMD_CH_MASTER = 69;
+	public static final int SMCMD_CH_MASTER_ACK = 70;
 }
--- a/rep/SessionList.java	Tue Dec 11 14:26:13 2007 +0900
+++ b/rep/SessionList.java	Fri Dec 21 13:55:24 2007 +0900
@@ -290,5 +290,18 @@
 		sessionLinkedList = list;
 	}
 
+	public void update(SocketChannel channel, SessionList receivedSessionList) {
+		LinkedList<Session> list = receivedSessionList.getList();
+		int i = 0;
+		for(Session session : list){
+			++i;
+			int sid = addSession(session);
+			setTranslationTable(channel, i, sid);
+		}
+	}
+
+	private void setTranslationTable(SocketChannel channel, int i, int sid) {
+		
+	}
 
 }
--- a/rep/SessionManager.java	Tue Dec 11 14:26:13 2007 +0900
+++ b/rep/SessionManager.java	Fri Dec 21 13:55:24 2007 +0900
@@ -8,6 +8,7 @@
 import java.nio.channels.Selector;
 import java.nio.channels.ServerSocketChannel;
 import java.nio.channels.SocketChannel;
+import java.util.LinkedList;
 import java.util.StringTokenizer;
 
 import rep.xml.SessionXMLDecoder;
@@ -31,7 +32,7 @@
 	
 	private SessionList sessionlist;
 	//SocketChannel sessionchannel;
-	private SessionManagerGUI sessionmanagerGUI;
+	private SessionManagerGUI gui;
 	private Selector selector;
 	private SessionManagerList smList;
 	private String myHost;
@@ -42,7 +43,7 @@
 	//private SocketChannel sessionchannel;
 	//private boolean co;
 	public SessionManager(int port) {
-		sessionmanagerGUI = new SessionManagerGUI();
+		gui = new SessionManagerGUI();
 	}
 	
 	public void openSelector() throws IOException{
@@ -128,16 +129,14 @@
 		switch(receivedCommand.cmd){
 		
 		case REP.SMCMD_JOIN:
-			if(isMaster){
-				int eid = allEditorList.addEditor(channel, receivedCommand);
-				receivedCommand.setEID(eid);
-				allEditorList.sendJoinAck(channel, receivedCommand);
-				sessionmanagerGUI.setComboEditor(eid, channel);
-			}else{
-				allEditorList.addEditor(channel);
-				smList.sendJoin(receivedCommand);
-				//sessionmanagerGUI.setComboEditor(repCmd.eid, channel);
-			}
+			
+			int tempeid = allEditorList.addEditor(channel, receivedCommand);
+			//sendCommand.setCMD(REP.SMCMD_JOIN_ACK);
+			//sendCommand.setEID(eid);
+			//REPPacketSend packetSend = new REPPacketSend(channel);
+			//packetSend.send(sendCommand);
+			gui.setComboEditor(tempeid, channel);
+			
 			break;
 			
 		case REP.SMCMD_JOIN_ACK:
@@ -154,8 +153,8 @@
 			session.setOwner(true);
 			session.addEditor(editor);
 			sessionlist.addSession(session);
-			sessionmanagerGUI.setComboSession(session.getSID(), session.getName());
-			sessionmanagerGUI.setComboEditor(editor.getEID(), editor.getChannel());
+			gui.setComboSession(session.getSID(), session.getName());
+			gui.setComboEditor(editor.getEID(), editor.getChannel());
 			session.addToRoutingTable(editor);
 			receivedCommand.setCMD(REP.SMCMD_PUT_ACK);
 			receivedCommand.setEID(1);
@@ -184,11 +183,11 @@
 			editor = new Editor(channel);
 			session = sessionlist.getSession(receivedCommand.sid);
 			if(session.isOwner()){
-				int eid = session.addEditor(editor);
-				editor.setEID(eid);
+				int eid2 = session.addEditor(editor);
+				editor.setEID(eid2);
 				//REPPacketSend send = new REPPacketSend(channel);
 				receivedCommand.setCMD(REP.SMCMD_SELECT_ACK);
-				receivedCommand.setEID(eid);
+				receivedCommand.setEID(eid2);
 				send.send(receivedCommand);
 			}else {
 				
@@ -208,10 +207,16 @@
 			
 		case REP.SMCMD_SM_JOIN:
 			
+			//SessionManagerのリストへ追加
+			smList.add(channel);
+			
 			//XMLからSessionListオブジェクトを生成する。
 			SessionXMLDecoder decoder = new SessionXMLDecoder();
 			SessionList receivedSessionList = decoder.decode(receivedCommand.string);
 			
+			//SessionListへ追加し変換テーブルを生成する。
+			sessionlist.update(channel, receivedSessionList);
+			
 			//myHost を設定。
 			if(myHost == null) setMyHostName(getLocalHostName(channel));
 			
@@ -226,12 +231,18 @@
 			sendCommand.setString(sessionlistEncoder.sessionListToXML());
 			send.send(sendCommand);
 			
-			//その他のSessionManagerに対してSMCMD_SM_JOINを送信。
+			//その他の SessionManager に対して SMCMD_UPDATEを 送信。
 			sendCommand = new REPCommand();
-			sendCommand.setCMD(REP.SMCMD_SM_JOIN);
+			sendCommand.setCMD(REP.SMCMD_UPDATE);
 			sendCommand.setString(receivedCommand.string);
 			smList.sendExcept(channel, sendCommand);
 			
+			//その他のSessionManagerに対してSMCMD_SM_JOINを送信。
+			//sendCommand = new REPCommand();
+			//sendCommand.setCMD(REP.SMCMD_SM_JOIN);
+			//sendCommand.setString(receivedCommand.string);
+			//smList.sendExcept(channel, sendCommand);
+			
 			if(isMaster){
 			}else {
 			}
@@ -254,8 +265,8 @@
 			break;
 			
 		case REP.SMCMD_UPDATE:
-			//SessionXMLDecoder decoder = new SessionXMLDecoder(receivedCommand.string);
 			
+			//SessionのownerのEditor
 			editor = new Editor(channel);
 			editor.setName(receivedCommand.string);
 			
@@ -264,15 +275,15 @@
 			
 			sessionlist.addSession(session);
 			
-			sessionmanagerGUI.setComboSession(session.getSID(), session.getName());
+			gui.setComboSession(session.getSID(), session.getName());
 			
-			if(isMaster){
-				receivedCommand.setCMD(REP.SMCMD_UPDATE_ACK);
-				smList.sendToSlave(receivedCommand);
-			}else{
-				receivedCommand.setCMD(REP.SMCMD_UPDATE);
-				smList.sendToMaster(receivedCommand);
-			}
+			//if(isMaster){
+			//	receivedCommand.setCMD(REP.SMCMD_UPDATE_ACK);
+			//	smList.sendToSlave(receivedCommand);
+			//}else{
+			//	receivedCommand.setCMD(REP.SMCMD_UPDATE);
+			//	smList.sendToMaster(receivedCommand);
+			//}
 			break;
 			
 		case REP.SMCMD_UPDATE_ACK:
@@ -285,7 +296,7 @@
 				
 				sessionlist.addSession(session);
 				
-				sessionmanagerGUI.setComboSession(session.getSID(), session.getName());
+				gui.setComboSession(session.getSID(), session.getName());
 			}
 			smList.sendToSlave(receivedCommand);
 			break;
@@ -300,7 +311,7 @@
 			break;
 		}
 	}
-	
+
 	private boolean setMaxHost(SocketChannel channel, String host) {
 		if(maxHost == null) {
 			maxHost = myHost;
@@ -346,11 +357,11 @@
 	}
 
 	private void openWindow() {
-		Thread th = new Thread( sessionmanagerGUI ); 
+		Thread th = new Thread( gui ); 
 		th.start();
 		//System.out.println(sessionmanagerGUI.toString());
-		sessionmanagerGUI.addConnectionListener(this);
-		sessionmanagerGUI.addREPActionListener(this);
+		gui.addConnectionListener(this);
+		gui.addREPActionListener(this);
 	}
 
 	private void connectSession(String host) {