changeset 17:806e34a6fecd

*** empty log message ***
author pin
date Fri, 02 Nov 2007 15:27:31 +0900
parents cb482350a1aa
children b429fe1e15a8
files rep/REPCommand.java rep/REPPacketReceive.java rep/SessionManager.java
diffstat 3 files changed, 38 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/rep/REPCommand.java	Fri Nov 02 14:57:10 2007 +0900
+++ b/rep/REPCommand.java	Fri Nov 02 15:27:31 2007 +0900
@@ -12,6 +12,8 @@
 	
 	public  String string;
 	private int textsiz;
+	String host;
+	int port;
 	
 	public REPCommand(int cmd,int sid,int eid, int seq, int lineno, int textsiz, String string) {
 		this.cmd = cmd;
@@ -48,4 +50,14 @@
 		string = string2;
 	}
 
+	public void setHost(String host) {
+		// TODO Auto-generated method stub
+		this.host = host;
+	}
+
+	public void setPort(int port) {
+		// TODO Auto-generated method stub
+		this.port = port;
+	}
+
 }
--- a/rep/REPPacketReceive.java	Fri Nov 02 14:57:10 2007 +0900
+++ b/rep/REPPacketReceive.java	Fri Nov 02 15:27:31 2007 +0900
@@ -9,9 +9,9 @@
 public class REPPacketReceive {
 	
 	SocketChannel socketchannel;
-	private int HEADER_SIZE = 24;
-	private String host;
-	private int port;
+	private final int HEADER_SIZE = 24;
+	//private String host;
+	//private int port;
 	
 	public REPPacketReceive(SocketChannel sc){
 		socketchannel = sc;
@@ -76,10 +76,12 @@
 	private void getSocket(REPCommand command) {
 		String string = command.string;
 		StringTokenizer st2 = new StringTokenizer(string, ":");
-		host = st2.nextToken();
+		String host = st2.nextToken();
 		String portstring = st2.nextToken();
-		port = Integer.parseInt(portstring);
+		int port = Integer.parseInt(portstring);
 		int socketInfoLength = host.length() + portstring.length() + 2;
 		command.setString(string.substring(0, string.length() - socketInfoLength));
+		command.setHost(host);
+		command.setPort(port);
 	}
 }
--- a/rep/SessionManager.java	Fri Nov 02 14:57:10 2007 +0900
+++ b/rep/SessionManager.java	Fri Nov 02 15:27:31 2007 +0900
@@ -32,6 +32,8 @@
 	private SessionManagerGUI sessionmanagerGUI;
 	private Selector selector;
 	private SessionManagerList smList;
+	private String myHost;
+	private int myPort;
 	//private SocketChannel sessionchannel;
 	//private boolean co;
 	public SessionManager(int port) {
@@ -118,18 +120,9 @@
 		if(repCmd == null) return;
 		switch(repCmd.cmd){
 		case REP.SMCMD_JOIN:
-			int eid = sessionlist.getNumberOfEditor();	//eidを取得
-			sessionmanagerGUI.setComboEditor(eid, channel);		//ComboBoxにEditorを追加
-			repCmd.setEID(eid);							//eidを決定して、
-			//repCmd.setCMD(repCmd.cmd + 1);				//ACKを返す
-			repCmd.setCMD(REP.SMCMD_JOIN_ACK);
-			repCmd.string = sessionlist.getSessionList();		//Session一覧を
-			REPPacketSend repSend = new REPPacketSend(channel);	//Editor側へ送信
-			repSend.send(repCmd);
 			join_ack(channel, repCmd);
 			break;
 		case REP.SMCMD_JOIN_ACK:
-			
 			break;
 		case REP.SMCMD_PUT:
 			int sessionID = sessionlist.addSession(channel, repCmd.string);	//SIDを取得
@@ -152,27 +145,24 @@
 		case REP.SMCMD_SELECT_ACK:
 			break;
 		case REP.SMCMD_SESSION:
-			//repCmd.setCMD(REP.SMCMD_SESSION_ACK);
-			//sessionlist.addSessionManager(channel, repCmd);
 			break;
 		case REP.SMCMD_SM_JOIN:
+			myHost = repCmd.host;
+			myPort = repCmd.port;
 			sm_join_ack(channel, repCmd);
 			break;
 		case REP.SMCMD_SM_JOIN_ACK:
 			smList.add(channel);								//SessionManagerのリストへ追加
-			
 			break;
 		case REP.SMCMD_UPDATE:
 			int sessionID2 = sessionlist.addSession(channel, repCmd.string);	//Sessionを作成
 			sessionlist.addEditor(channel, sessionID2, repCmd);
-			//sessionlist.sendAddedSession(repCmd);
 			sessionmanagerGUI.setComboSession(sessionID2, repCmd.string);	//ComboBoxにSessionを追加
 			break;
 		case REP.SMCMD_UPDATE_ACK:
-			//
 			break;
 		case REP.REPCMD_READ:
-			sessionlist.sendCmd(channel, repCmd);
+			//sessionlist.sendCmd(channel, repCmd);
 			break;
 		default:
 			//sessionlist.sendCmd(channel, repCmd);
@@ -183,11 +173,9 @@
 	}
 
 	private void sm_join_ack(SocketChannel channel, REPCommand repCmd) {
-		//SocketAddress address = channel.socket().getRemoteSocketAddress();
 		String socketstring = getSocketString(channel);
 		System.out.println(socketstring);
 		smList.add(channel);								//SessionManagerのリストへ追加
-		//repCmd.setCMD(repCmd.cmd + 1);
 		repCmd.setCMD(REP.SMCMD_SM_JOIN_ACK);
 		repCmd.setString(repCmd.string + ":" + socketstring);
 		REPPacketSend repSend4 = new REPPacketSend(channel);
@@ -195,8 +183,20 @@
 	}
 
 	private void join_ack(SocketChannel channel, REPCommand repCmd) {
-		String dis_host = channel.socket().getRemoteSocketAddress().toString();
-		System.out.println(dis_host);
+		int eid = sessionlist.getNumberOfEditor();	//eidを取得
+		sessionmanagerGUI.setComboEditor(eid, channel);		//ComboBoxにEditorを追加
+		repCmd.setEID(eid);							//eidを決定して、
+		repCmd.setCMD(REP.SMCMD_JOIN_ACK);
+		repCmd.string = sessionlist.getSessionList();		//Session一覧を
+		
+		String string = getSocketString(channel);
+		StringTokenizer stn = new StringTokenizer(string, ":");
+		String host = stn.nextToken();
+		String port = stn.nextToken();
+		repCmd.setString(repCmd.string + ":" + myHost + ":" + port);
+		
+		REPPacketSend repSend = new REPPacketSend(channel);	//Editor側へ送信
+		repSend.send(repCmd);
 	}
 
 	public static void main(String[] args) throws InterruptedException, IOException {