private boolean processData(RdpPacket_Localised data, int[] ext_disc_reason)
			throws RdesktopException, OrderException {
		int data_type, ctype, clen, len, roff, rlen;
		data_type = 0;

		data.incrementPosition(6); // skip shareid, pad, streamid
		len = data.getLittleEndian16();
		data_type = data.get8();
		ctype = data.get8(); // compression type
		clen = data.getLittleEndian16(); // compression length
		clen -= 18;

		switch (data_type) {

		case (Rdp.RDP_DATA_PDU_UPDATE):
			// logger.debug("Rdp.RDP_DATA_PDU_UPDATE");
			this.processUpdate(data);
			break;

		case RDP_DATA_PDU_CONTROL:
			// logger.debug(("Received Control PDU\n"));
			break;

		case RDP_DATA_PDU_SYNCHRONISE:
			// logger.debug(("Received Sync PDU\n"));
			break;

		case (Rdp.RDP_DATA_PDU_POINTER):
			// logger.debug("Received pointer PDU");
			this.processPointer(data);
			break;
		case (Rdp.RDP_DATA_PDU_BELL):
			// logger.debug("Received bell PDU");
			/*
			 * SoundController soundController = new SoundController(); Sound
			 * sound = soundController.createSound(
			 * Sound.MIME_TYPE_AUDIO_MPEG_MP3,
			 * "http://droidcloudhq.com/assets/beep.mp3"); sound.play();
			 */
			break;
		case (Rdp.RDP_DATA_PDU_LOGON):
			// logger.debug("User logged on");
			isUserLoggedOn = true;
			break;
		case RDP_DATA_PDU_DISCONNECT:
			/*
			 * Normally received when user logs out or disconnects from a
			 * console session on Windows XP and 2003 Server
			 */
			ext_disc_reason[0] = processDisconnectPdu(data);
			// logger.debug(("Received disconnect PDU\n"));
			// System.out.println("disconnect pdu");
			return true;

		default:
			// logger.warn("Unimplemented Data PDU type " + data_type);

		}
		return false;
	}