1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
package knuddels;
import handler.*;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/**
*
* @author Flav
*/
public class SessionHandler extends Thread {
private Socket socket;
private boolean run;
private boolean validSocket;
public SessionHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
Client client = new Client(socket);
try {
InputStream in = socket.getInputStream();
byte type = (byte) in.read();
if (type == 0x00) {
while (run) {
byte[] buffer = Protocol.decode(in);
validSocket = true;
String[] tokens = knuddels.Huffman.decode(buffer).split("\0");
String opcode = tokens[0];
if (opcode.equals(ReceiveOpcode.EXCEPTION.getValue())) {
} else if (opcode.equals(ReceiveOpcode.DISCONNECT.getValue())) {
} else if (opcode.equals(ReceiveOpcode.CHAT.getValue())) {
ChatHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.ROSE.getValue())) {
RoseHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.PING.getValue())) {
PingHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.MAIL.getValue())) {
MailHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.SELECT.getValue())) {
LoginSelectHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.POLL.getValue())) {
PollHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.PRESENT.getValue())) {
PresentHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.CHANNELPW.getValue())) {
ChannelPwHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.EDIT.getValue())) {
EditHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.KNUDDELS.getValue())) {
KnuddelsHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.FAN.getValue())) {
FanHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.KOMMENT.getValue())) {
KommentHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.GB.getValue())) {
GbHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.CLOSEANDSEND.getValue())) {
CloseandsendHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.COINS.getValue())) {
CoinsHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.INFOEDIT.getValue())) {
ChannelrulesHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.LINK_CLICKED.getValue())) {
} else if (opcode.equals(ReceiveOpcode.JOIN_CHANNEL.getValue())) {
JoinChannelHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.Q_TOKEN.getValue())) {
} else if (opcode.equals(ReceiveOpcode.REQUEST_USER_LIST.getValue())) {
RequestUserListHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.HANDSHAKE.getValue())) {
HandshakeHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.REQUEST_HELP.getValue())) {
RequestHelpHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.LEAVE_CHANNEL.getValue())) {
LeaveChannelHandler.handle(tokens, client);
} else if (opcode.equals(ReceiveOpcode.WHOIS.getValue())) {
} else {
System.out.println(String.format("Unhandled opcode: %s", opcode));
}
}
} else if (type == 0x02) {
// registration
}
} catch (IOException e) {
} finally {
client.disconnect();
}
}
}
|