# HG changeset patch # User pin # Date 1198212924 -32400 # Node ID 9381b4734a0b17a503545b07c954a99a1bedb224 # Parent 4bb583553a42106ead1666901f1a68d60677bd12 *** empty log message *** diff -r 4bb583553a42 -r 9381b4734a0b rep/Editor.java --- 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; + } + } diff -r 4bb583553a42 -r 9381b4734a0b rep/REP.java --- 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; } diff -r 4bb583553a42 -r 9381b4734a0b rep/SessionList.java --- 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 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) { + + } } diff -r 4bb583553a42 -r 9381b4734a0b rep/SessionManager.java --- 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) {