7
|
1 package rep;
|
|
2
|
138
|
3 import java.nio.channels.SocketChannel;
|
7
|
4 import java.util.LinkedList;
|
|
5 import java.util.List;
|
|
6
|
133
|
7 import rep.channel.REPSocketChannel;
|
56
|
8 import rep.xml.SessionXMLEncoder;
|
|
9
|
7
|
10 public class SessionManagerList {
|
|
11
|
133
|
12 private List<REPSocketChannel<REPCommand>> list = new LinkedList<REPSocketChannel<REPCommand>>();
|
7
|
13 private int mySMID;
|
133
|
14 private REPSocketChannel<REPCommand> master;
|
7
|
15
|
133
|
16 public void add(REPSocketChannel<REPCommand> channel) {
|
7
|
17 list.add(channel);
|
|
18 }
|
|
19
|
21
|
20 public void sendUpdate(int sessionID, String string) {
|
133
|
21 for(REPSocketChannel<REPCommand> channel : list){
|
7
|
22 REPPacketSend send = new REPPacketSend(channel);
|
|
23 send.send(new REPCommand(REP.SMCMD_UPDATE, 0, mySMID, 0, 0, string.length(), string));
|
|
24 }
|
|
25 }
|
|
26
|
21
|
27 public void sendJoin(REPCommand command) {
|
133
|
28 for(REPSocketChannel<REPCommand> channel : list){
|
21
|
29 REPPacketSend send = new REPPacketSend(channel);
|
|
30 send.send(command);
|
|
31 }
|
|
32 }
|
25
|
33
|
|
34 public void sendUpdateUp(REPCommand command){
|
|
35 REPPacketSend send = new REPPacketSend(master);
|
|
36 command.setCMD(REP.SMCMD_UPDATE_UP);
|
|
37 send.send(command);
|
|
38 }
|
|
39
|
|
40 public void sendUpdateDown(REPCommand command){
|
|
41 command.setCMD(REP.SMCMD_UPDATE_DOWN);
|
133
|
42 for(REPSocketChannel<REPCommand> channel : list){
|
25
|
43 if(channel == master) continue;
|
|
44 REPPacketSend send = new REPPacketSend(channel);
|
|
45 send.send(command);
|
|
46 }
|
|
47 }
|
|
48
|
133
|
49 public void setMaster(REPSocketChannel<REPCommand> channel){
|
25
|
50 this.master = channel;
|
|
51 }
|
21
|
52
|
56
|
53 public void sendSessionList(SessionList sessionlist, REPCommand command) {
|
|
54 SessionXMLEncoder encoder = new SessionXMLEncoder(sessionlist);
|
|
55 command.setString(encoder.sessionListToXML());
|
31
|
56
|
133
|
57 for(REPSocketChannel<REPCommand> channel : list){
|
31
|
58 REPPacketSend send = new REPPacketSend(channel);
|
|
59 send.send(command);
|
|
60 }
|
|
61 }
|
|
62
|
133
|
63 public void send(REPSocketChannel<REPCommand> channel, REPCommand repCmd) {
|
38
|
64
|
|
65 }
|
|
66
|
56
|
67 public void sendToMaster(REPCommand repCmd) {
|
|
68 REPPacketSend send = new REPPacketSend(master);
|
|
69 send.send(repCmd);
|
|
70 }
|
|
71
|
|
72 public void sendToSlave(REPCommand repCmd) {
|
133
|
73 for(REPSocketChannel<REPCommand> channel : list){
|
58
|
74 if(channel.equals(master)) continue;
|
56
|
75 REPPacketSend send = new REPPacketSend(channel);
|
|
76 send.send(repCmd);
|
|
77 }
|
|
78 }
|
|
79
|
138
|
80 public void sendExcept(REPSocketChannel<REPCommand> channel2, REPCommand command) {
|
133
|
81 for(REPSocketChannel<REPCommand> channel : list){
|
138
|
82 if(channel.equals(channel2)) continue;
|
78
|
83 REPPacketSend send = new REPPacketSend(channel);
|
|
84 send.send(command);
|
|
85 }
|
|
86 }
|
|
87
|
7
|
88 }
|