Mercurial > hg > RemoteEditor > REPSessionManager
view rep/SessionList.java @ 18:b429fe1e15a8
*** empty log message ***
author | pin |
---|---|
date | Fri, 02 Nov 2007 15:40:40 +0900 |
parents | 2d4c2c19d2d0 |
children | 593f915dd6ff |
line wrap: on
line source
package rep; import java.nio.channels.SocketChannel; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; public class SessionList { //List<LinkedList<SocketChannel>> sessions = new LinkedList<LinkedList<SocketChannel>>(); //Hashtable<Integer, LinkedList<SocketChannel>> sessions2 = new Hashtable<Integer, LinkedList<SocketChannel>>(); Hashtable<Integer, Session> session3 = new Hashtable<Integer, Session>(); private int sessionID = 0; private int editorCount = 0; private SocketChannel smchannel; private boolean channelequals = false; public void add(SocketChannel channel) { } public int getEditorNumber() { return 0; } public void add(SocketChannel channel, int sid) { } public int addSession(SocketChannel channel, String string) { sessionID++; //sessions2.put(sessionID, new LinkedList<SocketChannel>()); //sessions.add(new LinkedList<SocketChannel>()); //return sessions2.size(); session3.put(sessionID, new Session(sessionID, string, channel)); //addEditor(channel, sid, command); return sessionID; } public void addEditor(SocketChannel channel, int sid, REPCommand repCmd) { int editorID = repCmd.eid; //editorCount++; //sessions.get(sid-1).add(channel); //sessions2.get(sid).add(channel); if(session3.get(sid) == null) System.out.println("ʂہI"); session3.get(sid).addEditor(editorID, channel); } public int getSessionID(SocketChannel channel) { return 0; } public int getNumberOfEditor() { editorCount++; return editorCount; } public void sendCmd(SocketChannel channel2, REPCommand repCmd) { //int sessionID = repCmd.sid; //LinkedList <SocketChannel> channelList = sessions2.get(repCmd.sid); LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList(); for(Editor editor : editorList){ SocketChannel channel = editor.getChannel(); if(channel.equals(channel2)) { System.out.println("equals"); continue; } REPPacketSend repSend = new REPPacketSend(channel); repSend.send(repCmd); } } public void sendCmd(SocketChannel channel, REPCommand repCmd, boolean ring){ LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList(); REPPacketSend repsend = null; for(Editor editor : editorList){ SocketChannel channel2 = editor.getChannel(); if(channel.equals(channel2)){ System.out.println("equals"); channelequals = true; }else if(channelequals){ repsend = new REPPacketSend(channel2); repsend.send(repCmd); } } //repsend.send(repCmd); //repCmd.setCMD(repCmd.cmd + 1); //repsend.send(repCmd); } public void addSessionManager(SocketChannel channel, REPCommand repCmd) { smchannel = channel; } public void sendAddedSession(REPCommand repCmd) { repCmd.setCMD(REP.SMCMD_SM_JOIN); REPPacketSend repSend = new REPPacketSend(smchannel); //repSend.send(repCmd); } public String getSessionList() { if (session3 != null) { System.out.println(session3.toString()); return session3.toString(); } return "{}"; } public void sendToNextEditor(SocketChannel channel, REPCommand repCmd) { Editor editor2 = null; Editor editor3; LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList(); for(Editor editor : editorList){ SocketChannel channel2 = editor.getChannel(); if(channel.equals(channel2)){ editor2 = editor; } } int size = editorList.size(); Editor lastEditor = (Editor) editorList.getLast(); if(size == 0){ editor3 = null; }else if(editor2 == lastEditor){ editor3 = editorList.get(0); }else{ editor3 = editorList.get(editorList.indexOf(editor2)+1); } if(editor3 != null){ REPPacketSend send = new REPPacketSend(editor3.getChannel()); send.send(repCmd); } } public void addEditor(SocketChannel editorChannel, int sid, int eid) { session3.get(sid).addEditor(eid, editorChannel); } public void sendSelect(int sid) { SocketChannel channel = session3.get(sid).masterEditor.getChannel(); REPPacketSend send = new REPPacketSend(channel); send.send(new REPCommand(REP.SMCMD_SELECT, sid, 0, 0, 0, 0, "")); } }