Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.client.net.packet.type;
- /**
- * @author Daniel
- */
- public enum PacketType {
- INCOMING,
- OUTGOING
- }
- package com.client.net.packet;
- import com.client.net.packet.type.PacketType;
- /**
- * @author Daniel
- */
- public abstract class Packet {
- protected abstract PacketType getPacketType();
- protected abstract Integer[] getIndexes();
- }
- package com.client.net.packet.incoming;
- import com.client.Client;
- import com.client.net.Stream;
- import com.client.net.packet.IncomingPacketHandler;
- import com.client.net.packet.Packet;
- import com.client.net.packet.type.PacketType;
- /**
- * @author Daniel
- */
- public abstract class IncomingPacket extends Packet {
- protected int getPacketIndex() {
- return IncomingPacketHandler.getIncomingPacketIndex();
- }
- protected int getPacketSize() {
- return IncomingPacketHandler.getIncomingPacketSize();
- }
- @Override
- protected PacketType getPacketType() {
- return PacketType.INCOMING;
- }
- public abstract boolean handle(Client client, Stream stream);
- }
- package com.client.net.packet.outgoing;
- import com.client.net.Stream;
- import com.client.net.packet.Packet;
- import com.client.net.packet.type.PacketType;
- /**
- * @author Daniel
- */
- public abstract class OutgoingPacket extends Packet {
- @Override
- protected PacketType getPacketType() {
- return PacketType.OUTGOING;
- }
- public abstract void handle(Stream stream, Argument... arguments);
- protected Integer getInteger(Argument argument) {
- assert argument.getValue() instanceof Integer;
- return (Integer) argument.getValue();
- }
- protected Long getLong(Argument argument) {
- assert argument.getValue() instanceof Long;
- return (Long) argument.getValue();
- }
- protected String getString(Argument argument) {
- assert argument.getValue() instanceof String;
- return (String) argument.getValue();
- }
- }
- package com.client.net.packet.outgoing;
- /**
- * @author Daniel
- */
- public class Argument<T> {
- private final T value;
- private Argument(T value) {
- this.value = value;
- }
- T getValue() {
- return value;
- }
- public static Argument<Integer> get(Integer value) {
- return new Argument<Integer>(value);
- }
- public static Argument<Long> get(Long value) {
- return new Argument<Long>(value);
- }
- public static Argument<String> get(String value) {
- return new Argument<String>(value);
- }
- }
- package com.client.net.packet;
- import com.client.net.packet.incoming.IncomingPacket;
- import com.client.net.packet.outgoing.OutgoingPacket;
- import com.client.net.packet.type.PacketType;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * @author Daniel
- */
- class PacketManager {
- private static final Map<PacketType, Map<Integer, Packet>> PACKETS_MAP = new HashMap<PacketType, Map<Integer, Packet>>();
- static {
- /*Incoming Packets**/
- submit(
- new com.client.net.packet.incoming.impl._1(),
- new com.client.net.packet.incoming.impl._4_44_84_101_105_117_147_151_152_153_156_160_215(),
- new com.client.net.packet.incoming.impl._8(),
- new com.client.net.packet.incoming.impl._24(),
- new com.client.net.packet.incoming.impl._27(),
- new com.client.net.packet.incoming.impl._28(),
- new com.client.net.packet.incoming.impl._29(),
- new com.client.net.packet.incoming.impl._31(),
- new com.client.net.packet.incoming.impl._34(),
- new com.client.net.packet.incoming.impl._35(),
- new com.client.net.packet.incoming.impl._36(),
- new com.client.net.packet.incoming.impl._38(),
- new com.client.net.packet.incoming.impl._45(),
- new com.client.net.packet.incoming.impl._46(),
- new com.client.net.packet.incoming.impl._50(),
- new com.client.net.packet.incoming.impl._53(),
- new com.client.net.packet.incoming.impl._60(),
- new com.client.net.packet.incoming.impl._61(),
- new com.client.net.packet.incoming.impl._64(),
- new com.client.net.packet.incoming.impl._65(),
- new com.client.net.packet.incoming.impl._68(),
- new com.client.net.packet.incoming.impl._70(),
- new com.client.net.packet.incoming.impl._71(),
- new com.client.net.packet.incoming.impl._72(),
- new com.client.net.packet.incoming.impl._73_241(),
- new com.client.net.packet.incoming.impl._74(),
- new com.client.net.packet.incoming.impl._75(),
- new com.client.net.packet.incoming.impl._78(),
- new com.client.net.packet.incoming.impl._79(),
- new com.client.net.packet.incoming.impl._81(),
- new com.client.net.packet.incoming.impl._85(),
- new com.client.net.packet.incoming.impl._86(),
- new com.client.net.packet.incoming.impl._87(),
- new com.client.net.packet.incoming.impl._88(),
- new com.client.net.packet.incoming.impl._97(),
- new com.client.net.packet.incoming.impl._99(),
- new com.client.net.packet.incoming.impl._103(),
- new com.client.net.packet.incoming.impl._104(),
- new com.client.net.packet.incoming.impl._106(),
- new com.client.net.packet.incoming.impl._107(),
- new com.client.net.packet.incoming.impl._108(),
- new com.client.net.packet.incoming.impl._109(),
- new com.client.net.packet.incoming.impl._110(),
- new com.client.net.packet.incoming.impl._111(),
- new com.client.net.packet.incoming.impl._112(),
- new com.client.net.packet.incoming.impl._113(),
- new com.client.net.packet.incoming.impl._114(),
- new com.client.net.packet.incoming.impl._115(),
- new com.client.net.packet.incoming.impl._121(),
- new com.client.net.packet.incoming.impl._122(),
- new com.client.net.packet.incoming.impl._123(),
- new com.client.net.packet.incoming.impl._124(),
- new com.client.net.packet.incoming.impl._125(),
- new com.client.net.packet.incoming.impl._126(),
- new com.client.net.packet.incoming.impl._127(),
- new com.client.net.packet.incoming.impl._128(),
- new com.client.net.packet.incoming.impl._134(),
- new com.client.net.packet.incoming.impl._137(),
- new com.client.net.packet.incoming.impl._142(),
- new com.client.net.packet.incoming.impl._154(),
- new com.client.net.packet.incoming.impl._155(),
- new com.client.net.packet.incoming.impl._161(),
- new com.client.net.packet.incoming.impl._164(),
- new com.client.net.packet.incoming.impl._166(),
- new com.client.net.packet.incoming.impl._171(),
- new com.client.net.packet.incoming.impl._172(),
- new com.client.net.packet.incoming.impl._174(),
- new com.client.net.packet.incoming.impl._175(),
- new com.client.net.packet.incoming.impl._176(),
- new com.client.net.packet.incoming.impl._177(),
- new com.client.net.packet.incoming.impl._178(),
- new com.client.net.packet.incoming.impl._179(),
- new com.client.net.packet.incoming.impl._185(),
- new com.client.net.packet.incoming.impl._187(),
- new com.client.net.packet.incoming.impl._196(),
- new com.client.net.packet.incoming.impl._200(),
- new com.client.net.packet.incoming.impl._206(),
- new com.client.net.packet.incoming.impl._208(),
- new com.client.net.packet.incoming.impl._214(),
- new com.client.net.packet.incoming.impl._217(),
- new com.client.net.packet.incoming.impl._218(),
- new com.client.net.packet.incoming.impl._219(),
- new com.client.net.packet.incoming.impl._221(),
- new com.client.net.packet.incoming.impl._230(),
- new com.client.net.packet.incoming.impl._240(),
- new com.client.net.packet.incoming.impl._244(),
- new com.client.net.packet.incoming.impl._246(),
- new com.client.net.packet.incoming.impl._248(),
- new com.client.net.packet.incoming.impl._249(),
- new com.client.net.packet.incoming.impl._253(),
- new com.client.net.packet.incoming.impl._254()
- );
- /*Outgoing Packets**/
- submit(
- new com.client.net.packet.outgoing.impl._0_78_121_130_136_148_150_202(),
- new com.client.net.packet.outgoing.impl._2(),
- new com.client.net.packet.outgoing.impl._3(),
- new com.client.net.packet.outgoing.impl._4(),
- new com.client.net.packet.outgoing.impl._5(),
- new com.client.net.packet.outgoing.impl._6(),
- new com.client.net.packet.outgoing.impl._7(),
- new com.client.net.packet.outgoing.impl._8(),
- new com.client.net.packet.outgoing.impl._11(),
- new com.client.net.packet.outgoing.impl._12_60(),
- new com.client.net.packet.outgoing.impl._14(),
- new com.client.net.packet.outgoing.impl._16(),
- new com.client.net.packet.outgoing.impl._17(),
- new com.client.net.packet.outgoing.impl._18(),
- new com.client.net.packet.outgoing.impl._21(),
- new com.client.net.packet.outgoing.impl._23(),
- new com.client.net.packet.outgoing.impl._25(),
- new com.client.net.packet.outgoing.impl._35(),
- new com.client.net.packet.outgoing.impl._36(),
- new com.client.net.packet.outgoing.impl._39(),
- new com.client.net.packet.outgoing.impl._40(),
- new com.client.net.packet.outgoing.impl._41(),
- new com.client.net.packet.outgoing.impl._43(),
- new com.client.net.packet.outgoing.impl._45(),
- new com.client.net.packet.outgoing.impl._53(),
- new com.client.net.packet.outgoing.impl._57(),
- new com.client.net.packet.outgoing.impl._70(),
- new com.client.net.packet.outgoing.impl._72(),
- new com.client.net.packet.outgoing.impl._73(),
- new com.client.net.packet.outgoing.impl._74(),
- new com.client.net.packet.outgoing.impl._75(),
- new com.client.net.packet.outgoing.impl._77(),
- new com.client.net.packet.outgoing.impl._79(),
- new com.client.net.packet.outgoing.impl._85(),
- new com.client.net.packet.outgoing.impl._86(),
- new com.client.net.packet.outgoing.impl._87(),
- new com.client.net.packet.outgoing.impl._95(),
- new com.client.net.packet.outgoing.impl._103(),
- new com.client.net.packet.outgoing.impl._117(),
- new com.client.net.packet.outgoing.impl._120(),
- new com.client.net.packet.outgoing.impl._122(),
- new com.client.net.packet.outgoing.impl._126(),
- new com.client.net.packet.outgoing.impl._128(),
- new com.client.net.packet.outgoing.impl._129(),
- new com.client.net.packet.outgoing.impl._131(),
- new com.client.net.packet.outgoing.impl._132(),
- new com.client.net.packet.outgoing.impl._133(),
- new com.client.net.packet.outgoing.impl._135(),
- new com.client.net.packet.outgoing.impl._138(),
- new com.client.net.packet.outgoing.impl._139(),
- new com.client.net.packet.outgoing.impl._145(),
- new com.client.net.packet.outgoing.impl._153(),
- new com.client.net.packet.outgoing.impl._155(),
- new com.client.net.packet.outgoing.impl._156(),
- new com.client.net.packet.outgoing.impl._168(),
- new com.client.net.packet.outgoing.impl._181(),
- new com.client.net.packet.outgoing.impl._183(),
- new com.client.net.packet.outgoing.impl._185(),
- new com.client.net.packet.outgoing.impl._188(),
- new com.client.net.packet.outgoing.impl._189(),
- new com.client.net.packet.outgoing.impl._192(),
- new com.client.net.packet.outgoing.impl._200(),
- new com.client.net.packet.outgoing.impl._204(),
- new com.client.net.packet.outgoing.impl._208(),
- new com.client.net.packet.outgoing.impl._210(),
- new com.client.net.packet.outgoing.impl._214(),
- new com.client.net.packet.outgoing.impl._215(),
- new com.client.net.packet.outgoing.impl._218(),
- new com.client.net.packet.outgoing.impl._222(),
- new com.client.net.packet.outgoing.impl._228(),
- new com.client.net.packet.outgoing.impl._229(),
- new com.client.net.packet.outgoing.impl._234(),
- new com.client.net.packet.outgoing.impl._236(),
- new com.client.net.packet.outgoing.impl._237(),
- new com.client.net.packet.outgoing.impl._238(),
- new com.client.net.packet.outgoing.impl._246(),
- new com.client.net.packet.outgoing.impl._249(),
- new com.client.net.packet.outgoing.impl._252(),
- new com.client.net.packet.outgoing.impl._253()
- );
- }
- static IncomingPacket getIncomingPacket(Integer integer) {
- return (IncomingPacket) getPacket(PacketType.INCOMING, integer);
- }
- static OutgoingPacket getOutgoingPacket(Integer integer) {
- return (OutgoingPacket) getPacket(PacketType.OUTGOING, integer);
- }
- private static Packet getPacket(PacketType packetType, Integer integer) {
- return PACKETS_MAP.get(packetType).get(integer);
- }
- private static void submit(Packet... packets) {
- for (Packet packet : packets) {
- submit(packet);
- }
- }
- private static void submit(Packet packet) {
- final PacketType packetType = packet.getPacketType();
- if (!PACKETS_MAP.containsKey(packetType)) {
- PACKETS_MAP.put(packetType, new HashMap<Integer, Packet>());
- }
- final Integer[] indexes = packet.getIndexes();
- for (Integer index : indexes) {
- if (!PACKETS_MAP.get(packetType).containsKey(index)) {
- PACKETS_MAP.get(packetType).put(index, packet);
- }
- }
- }
- }
- package com.client.net.packet;
- import com.client.Client;
- import com.client.configuration.Constants;
- import com.client.net.ISAACRandomGen;
- import com.client.net.RSSocket;
- import com.client.net.Stream;
- import com.client.net.packet.incoming.IncomingPacket;
- import com.logging.Logger;
- import java.io.IOException;
- import java.util.logging.Level;
- /**
- * @author Daniel
- */
- public class IncomingPacketHandler {
- private static Stream stream;
- private static RSSocket socketStream;
- private static ISAACRandomGen encryption;
- private static int incomingPacketIndex;
- private static int incomingPacketSize;
- private static int gameLoops;
- public static boolean handleIncomingPacket(Client client) {
- if (socketStream == null) {
- return false;
- }
- try {
- int availableBytes = availableBytes();
- if (availableBytes == 0)
- return false;
- if (incomingPacketIndex == -1) {
- socketStream.flushInputStream(stream.buffer, 1);
- incomingPacketIndex = (stream.buffer[0] & 0xff);
- if (encryption != null)
- incomingPacketIndex = (incomingPacketIndex - encryption.getNextKey() & 0xff);
- incomingPacketSize = (Constants.PACKET_SIZES[incomingPacketIndex]);
- availableBytes--;
- }
- if (incomingPacketSize == -1)
- if (availableBytes > 0) {
- socketStream.flushInputStream(stream.buffer, 1);
- incomingPacketSize = (stream.buffer[0] & 0xff);
- availableBytes--;
- } else {
- return false;
- }
- if (incomingPacketSize == -2)
- if (availableBytes > 1) {
- socketStream.flushInputStream(stream.buffer, 2);
- stream.currentOffset = 0;
- incomingPacketSize = (stream.readUnsignedWord());
- availableBytes -= 2;
- } else {
- return false;
- }
- if (availableBytes < incomingPacketSize)
- return false;
- stream.currentOffset = 0;
- socketStream.flushInputStream(stream.buffer, incomingPacketSize);
- gameLoops = 0;
- final IncomingPacket packet = PacketManager.getIncomingPacket(incomingPacketIndex);
- if (packet != null && packet.handle(client, stream)) {
- incomingPacketIndex = -1;
- return true;
- }
- client.resetLogout();
- } catch (IOException ex) {
- Logger.log(IncomingPacketHandler.class, Level.SEVERE, String.format("Packet Error %d:%d", incomingPacketIndex, incomingPacketSize), ex);
- return false;
- }
- incomingPacketIndex = -1;
- return true;
- }
- public static void setEncryption(ISAACRandomGen encryption) {
- if (encryption == null) {
- throw new RuntimeException("Cannot set Encryption to null; Use 'closeSocketStream'");
- }
- if (IncomingPacketHandler.encryption != null) {
- return;
- }
- IncomingPacketHandler.encryption = encryption;
- }
- public static RSSocket getSocketStream() {
- return socketStream;
- }
- public static void setSocketStream(RSSocket socketStream) {
- IncomingPacketHandler.socketStream = socketStream;
- }
- public static void closeSocketStream() {
- if (socketStream == null) {
- return;
- }
- try {
- socketStream.close();
- } catch (Exception ex) {
- Logger.log(IncomingPacketHandler.class, Level.WARNING, "Error Closing Incoming Socket Stream", ex);
- }
- socketStream = null;
- }
- private static int availableBytes() {
- if (socketStream == null) {
- return 0;
- }
- try {
- return socketStream.available();
- } catch (Exception ex) {
- return 0;
- }
- }
- public static Stream getStream() {
- return stream;
- }
- public static void openStream() {
- if (stream == null) {
- stream = Stream.create();
- }
- }
- public static void closeStream() {
- if (stream != null) {
- stream = null;
- }
- }
- public static int getIncomingPacketIndex() {
- return incomingPacketIndex;
- }
- public static void setIncomingPacketIndex(int incomingPacketIndex) {
- IncomingPacketHandler.incomingPacketIndex = incomingPacketIndex;
- }
- public static int getIncomingPacketSize() {
- return incomingPacketSize;
- }
- public static void setIncomingPacketSize(int incomingPacketSize) {
- IncomingPacketHandler.incomingPacketSize = incomingPacketSize;
- }
- public static int getGameLoops() {
- return gameLoops;
- }
- public static void setGameLoops(int gameLoops) {
- IncomingPacketHandler.gameLoops = gameLoops;
- }
- }
- package com.client.net.packet;
- import com.client.net.Stream;
- import com.client.net.packet.outgoing.Argument;
- import com.client.net.packet.outgoing.OutgoingPacket;
- /**
- * @author Daniel
- */
- public class OutgoingPacketHandler {
- private static Stream stream;
- public static void handle(int value, Argument... arguments) {
- final OutgoingPacket packet = PacketManager.getOutgoingPacket(value);
- if (packet != null) {
- stream.createFrame(value);
- packet.handle(stream, arguments);
- }
- }
- public static void openStream() {
- if (stream == null) {
- stream = Stream.create();
- }
- }
- public static void closeStream() {
- if (stream != null) {
- stream = null;
- }
- }
- public static Stream getStream() {
- return stream;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement