annotate rep/SessionList.java @ 26:ad1060ba4213

*** empty log message ***
author pin
date Fri, 09 Nov 2007 17:52:54 +0900
parents 2d4c2c19d2d0
children 593f915dd6ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
1 package rep;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
2
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
3 import java.nio.channels.SocketChannel;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
4 import java.util.Hashtable;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
5 import java.util.LinkedList;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
6 import java.util.List;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
7
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
8 public class SessionList {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
9
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
10 //List<LinkedList<SocketChannel>> sessions = new LinkedList<LinkedList<SocketChannel>>();
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
11 //Hashtable<Integer, LinkedList<SocketChannel>> sessions2 = new Hashtable<Integer, LinkedList<SocketChannel>>();
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
12 Hashtable<Integer, Session> session3 = new Hashtable<Integer, Session>();
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
13 private int sessionID = 0;
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
14 private int editorCount = 0;
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
15
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
16 private SocketChannel smchannel;
2
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
17 private boolean channelequals = false;
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
18
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
19 public void add(SocketChannel channel) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
20
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
21 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
22
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
23 public int getEditorNumber() {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
24 return 0;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
25
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
26 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
27
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
28 public void add(SocketChannel channel, int sid) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
29
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
30 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
31
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
32 public int addSession(SocketChannel channel, String string) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
33 sessionID++;
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
34 //sessions2.put(sessionID, new LinkedList<SocketChannel>());
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
35 //sessions.add(new LinkedList<SocketChannel>());
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
36 //return sessions2.size();
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
37 session3.put(sessionID, new Session(sessionID, string, channel));
9
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
38 //addEditor(channel, sid, command);
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
39 return sessionID;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
40
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
41 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
42
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
43 public void addEditor(SocketChannel channel, int sid, REPCommand repCmd) {
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
44 int editorID = repCmd.eid;
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
45 //editorCount++;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
46 //sessions.get(sid-1).add(channel);
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
47 //sessions2.get(sid).add(channel);
9
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
48 if(session3.get(sid) == null) System.out.println("ʂہI");
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
49 session3.get(sid).addEditor(editorID, channel);
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
50 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
51
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
52 public int getSessionID(SocketChannel channel) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
53 return 0;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
54 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
55
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
56 public int getNumberOfEditor() {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
57 editorCount++;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
58 return editorCount;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
59 }
2
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
60
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
61 public void sendCmd(SocketChannel channel2, REPCommand repCmd) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
62 //int sessionID = repCmd.sid;
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
63 //LinkedList <SocketChannel> channelList = sessions2.get(repCmd.sid);
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
64 LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList();
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
65 for(Editor editor : editorList){
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
66 SocketChannel channel = editor.getChannel();
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
67 if(channel.equals(channel2)) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
68 System.out.println("equals");
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
69 continue;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
70 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
71 REPPacketSend repSend = new REPPacketSend(channel);
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
72 repSend.send(repCmd);
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
73 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
74 }
2
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
75
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
76 public void sendCmd(SocketChannel channel, REPCommand repCmd, boolean ring){
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
77 LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList();
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
78 REPPacketSend repsend = null;
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
79 for(Editor editor : editorList){
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
80 SocketChannel channel2 = editor.getChannel();
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
81 if(channel.equals(channel2)){
9
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
82 System.out.println("equals");
2
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
83 channelequals = true;
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
84 }else if(channelequals){
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
85 repsend = new REPPacketSend(channel2);
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
86 repsend.send(repCmd);
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
87 }
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
88 }
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
89 //repsend.send(repCmd);
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
90 //repCmd.setCMD(repCmd.cmd + 1);
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
91 //repsend.send(repCmd);
02fa9a68d9a2 *** empty log message ***
pin
parents: 1
diff changeset
92 }
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
93
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
94 public void addSessionManager(SocketChannel channel, REPCommand repCmd) {
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
95 smchannel = channel;
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
96
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
97 }
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
98
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
99 public void sendAddedSession(REPCommand repCmd) {
8
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
100 repCmd.setCMD(REP.SMCMD_SM_JOIN);
1
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
101 REPPacketSend repSend = new REPPacketSend(smchannel);
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
102 //repSend.send(repCmd);
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
103 }
3f5bf0255f5e *** empty log message ***
pin
parents: 0
diff changeset
104
3
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
105 public String getSessionList() {
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
106 if (session3 != null) {
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
107 System.out.println(session3.toString());
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
108 return session3.toString();
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
109 }
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
110 return "{}";
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
111 }
f31fcac5a949 *** empty log message ***
pin
parents: 2
diff changeset
112
8
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
113 public void sendToNextEditor(SocketChannel channel, REPCommand repCmd) {
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
114 Editor editor2 = null;
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
115 Editor editor3;
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
116 LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList();
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
117 for(Editor editor : editorList){
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
118 SocketChannel channel2 = editor.getChannel();
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
119 if(channel.equals(channel2)){
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
120 editor2 = editor;
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
121 }
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
122 }
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
123 int size = editorList.size();
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
124 Editor lastEditor = (Editor) editorList.getLast();
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
125 if(size == 0){
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
126 editor3 = null;
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
127 }else if(editor2 == lastEditor){
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
128 editor3 = editorList.get(0);
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
129 }else{
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
130 editor3 = editorList.get(editorList.indexOf(editor2)+1);
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
131 }
9
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
132 if(editor3 != null){
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
133 REPPacketSend send = new REPPacketSend(editor3.getChannel());
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
134 send.send(repCmd);
2d4c2c19d2d0 *** empty log message ***
pin
parents: 8
diff changeset
135 }
8
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
136 }
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
137
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
138 public void addEditor(SocketChannel editorChannel, int sid, int eid) {
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
139
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
140 session3.get(sid).addEditor(eid, editorChannel);
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
141 }
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
142
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
143 public void sendSelect(int sid) {
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
144 SocketChannel channel = session3.get(sid).masterEditor.getChannel();
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
145 REPPacketSend send = new REPPacketSend(channel);
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
146 send.send(new REPCommand(REP.SMCMD_SELECT, sid, 0, 0, 0, 0, ""));
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
147 }
b774b87cc2c1 *** empty log message ***
pin
parents: 3
diff changeset
148
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
149 }