@Override protected void run() throws Exception { while (isRunning()) { // PACKET RECEIVED socket.receive(packet); int length = packet.getLength(); byte[] data = ByteBuffer.allocate(length).put(packet.getData(), 0, length).array(); SocketAddress address = packet.getSocketAddress(); // ALLOCATE CLIENT SWGClient client = (!connections.containsKey(address)) ? clientFactory.create(address) : connections.get(address); data = packagingService.disassemble(data, client.getCrc()); if (data.length == 1) { // TODO: Queue logout packet // TODO: Disconnect client } else if (data.length == 0) { } else { // TODO: Create SWG Message from data } } }