<?php 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(); } }} ?>
|