diff rep/handler/FirstConnector.java @ 387:6f356d160e58

IPv6 any address
author one@firefly.cr.ie.u-ryukyu.ac.jp
date Mon, 10 Nov 2008 22:21:52 +0900
parents 1fca50ce3508
children 18cacd0b3ccf
line wrap: on
line diff
--- a/rep/handler/FirstConnector.java	Mon Nov 10 22:19:34 2008 +0900
+++ b/rep/handler/FirstConnector.java	Mon Nov 10 22:21:52 2008 +0900
@@ -13,15 +13,19 @@
 
 public class FirstConnector extends Forwarder {
 
-	public FirstConnector(SessionManager manager) {
-		super(manager);
+	
+
+	public FirstConnector(SessionManager manager,
+			REPSocketChannel<REPCommand> channel) {
+		super(manager,channel);
 	}
-	
+
 	public void cancel(REPSocketChannel<REPCommand> socketChannel) {
 		manager.remove(socketChannel);
 	}
 
-	public void handle(REPSelectionKey<REPCommand> key) throws IOException {
+	@Override
+	public void handle(REPCommand command, REPSelectionKey<REPCommand> key) throws IOException {
 		/*
 		 * 接続要求は、EditorかSlave Editorで、
 		 *    join, put, sm_join
@@ -29,8 +33,6 @@
 		 *      sm_join_ack
 		 */
 		REPNode fw;
-		REPSocketChannel<REPCommand> channel = key.channel1();
-		REPCommand command = channel.read();
 		ServerMainLoop.logger.writeLog("FirstConnector: command = " + command);
 		switch(command.cmd) {
 		case SMCMD_JOIN: 
@@ -63,14 +65,14 @@
 		}
 		case SMCMD_SM_JOIN:
 		{
-			fw = new Dispatcher(manager); // FirstConnector?
+			fw = new Dispatcher(manager,channel); // FirstConnector?
 			manager.addWaitingSessionManager(fw, command);
 			break;
 		}
 		case SMCMD_SM_JOIN_ACK:
 			manager.setSessionManagerID(command.sid);
 			manager.afterConnect();
-			fw = new Dispatcher(manager);
+			fw = new Dispatcher(manager,channel);
 			manager.setParent(fw);
 			break;
 		default: throw new IOException();