Mercurial > hg > RemoteEditor > REPSessionManager
comparison 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 |
comparison
equal
deleted
inserted
replaced
386:bba62c4ac323 | 387:6f356d160e58 |
---|---|
11 import rep.channel.REPSelectionKey; | 11 import rep.channel.REPSelectionKey; |
12 import rep.channel.REPSocketChannel; | 12 import rep.channel.REPSocketChannel; |
13 | 13 |
14 public class FirstConnector extends Forwarder { | 14 public class FirstConnector extends Forwarder { |
15 | 15 |
16 public FirstConnector(SessionManager manager) { | 16 |
17 super(manager); | 17 |
18 public FirstConnector(SessionManager manager, | |
19 REPSocketChannel<REPCommand> channel) { | |
20 super(manager,channel); | |
18 } | 21 } |
19 | 22 |
20 public void cancel(REPSocketChannel<REPCommand> socketChannel) { | 23 public void cancel(REPSocketChannel<REPCommand> socketChannel) { |
21 manager.remove(socketChannel); | 24 manager.remove(socketChannel); |
22 } | 25 } |
23 | 26 |
24 public void handle(REPSelectionKey<REPCommand> key) throws IOException { | 27 @Override |
28 public void handle(REPCommand command, REPSelectionKey<REPCommand> key) throws IOException { | |
25 /* | 29 /* |
26 * 接続要求は、EditorかSlave Editorで、 | 30 * 接続要求は、EditorかSlave Editorで、 |
27 * join, put, sm_join | 31 * join, put, sm_join |
28 * が来る。それ以外はエラー。master もありか? | 32 * が来る。それ以外はエラー。master もありか? |
29 * sm_join_ack | 33 * sm_join_ack |
30 */ | 34 */ |
31 REPNode fw; | 35 REPNode fw; |
32 REPSocketChannel<REPCommand> channel = key.channel1(); | |
33 REPCommand command = channel.read(); | |
34 ServerMainLoop.logger.writeLog("FirstConnector: command = " + command); | 36 ServerMainLoop.logger.writeLog("FirstConnector: command = " + command); |
35 switch(command.cmd) { | 37 switch(command.cmd) { |
36 case SMCMD_JOIN: | 38 case SMCMD_JOIN: |
37 { | 39 { |
38 //どのSessionにも属さないエディタをリストに追加 | 40 //どのSessionにも属さないエディタをリストに追加 |
61 fw = editor; | 63 fw = editor; |
62 break; | 64 break; |
63 } | 65 } |
64 case SMCMD_SM_JOIN: | 66 case SMCMD_SM_JOIN: |
65 { | 67 { |
66 fw = new Dispatcher(manager); // FirstConnector? | 68 fw = new Dispatcher(manager,channel); // FirstConnector? |
67 manager.addWaitingSessionManager(fw, command); | 69 manager.addWaitingSessionManager(fw, command); |
68 break; | 70 break; |
69 } | 71 } |
70 case SMCMD_SM_JOIN_ACK: | 72 case SMCMD_SM_JOIN_ACK: |
71 manager.setSessionManagerID(command.sid); | 73 manager.setSessionManagerID(command.sid); |
72 manager.afterConnect(); | 74 manager.afterConnect(); |
73 fw = new Dispatcher(manager); | 75 fw = new Dispatcher(manager,channel); |
74 manager.setParent(fw); | 76 manager.setParent(fw); |
75 break; | 77 break; |
76 default: throw new IOException(); | 78 default: throw new IOException(); |
77 } | 79 } |
78 //myHost を設定。 | 80 //myHost を設定。 |