15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/* 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership. 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License. You may obtain a copy of the License at 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * See the License for the specific language governing permissions and 165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * limitations under the License. 175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Khen G. Kim, Aleksey V. Yantsen 215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 10.01.2004 255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.framework.jdwp; 275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport java.io.UnsupportedEncodingException; 295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.TestErrorException; 315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants; 325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.TypesLengths; 335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This base class represents JDWP packet. 365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class Packet { 385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final int REPLY_PACKET_FLAG = 0x80; 405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final int FLAGS_INDEX = 8; 425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final int HEADER_SIZE = 11; 445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The size in bytes of the BYTE type value. 475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected static final int BYTE_SIZE = 1; 495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The size in bytes of the SHORT type value. 525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected static final int SHORT_SIZE = 2; 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The size in bytes of the INT type value. 575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected static final int INT_SIZE = 4; 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The size in bytes of the LONG type value. 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected static final int LONG_SIZE = 8; 645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private static final int LENGTH_INDEX = 0; 665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private static final int ID_INDEX = 4; 685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private int id; 705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private byte flags; 725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private int length; 745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private byte data[]; 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private int reading_data_index; 785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * A constructor that creates an empty CommandPacket with empty header 815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * fields and no data. 825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Packet() { 845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = 0; 855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[0]; 865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * A constructor that creates Packet from array of bytes including header 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and data sections. 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param p array of bytes for new packet. 935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Packet(byte p[]) { 955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes length = (int) readFromByteArray(p, LENGTH_INDEX, INT_SIZE); 965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (length < HEADER_SIZE) { 975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException( 985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes "Packet creation error: size of packet = " + length 995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + "is less than header size = " + HEADER_SIZE); 1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes id = (int) readFromByteArray(p, ID_INDEX, INT_SIZE); 1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes flags = p[FLAGS_INDEX]; 1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[p.length - HEADER_SIZE]; 1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(p, HEADER_SIZE, data, 0, p.length - HEADER_SIZE); 1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = 0; 1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the length value of the header of the Packet. 1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the length value of the header of the Packet. 1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getLength() { 1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return length; 1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the id value of the header of the Packet. 1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param i 1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the id value of the header of the Packet. 1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setId(int i) { 1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes id = i; 1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the id value of the header of the Packet. 1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the id value of the header of the Packet. 1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getId() { 1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return id; 1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the flags value of the header of the Packet. 1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param f 1405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the flags value of the header of the Packet. 1415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setFlags(byte f) { 1435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes flags = f; 1445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the flags value of the header of the Packet. 1485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the flags value of the header of the Packet. 1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte getFlags() { 1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return flags; 1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the flags value from the header of the Packet. 1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param tag 1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Type tag (see JDWP.tag) 1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the flags value of the header of the Packet. 1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isValuePrimitiveType(byte tag) { 1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (tag) { 1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.ARRAY_TAG: { 1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: { 1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CHAR_TAG: { 1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.OBJECT_TAG: { 1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: { 1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: { 1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: { 1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: { 1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: { 1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.VOID_TAG: { 1925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: { 1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.STRING_TAG: { 1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_TAG: { 2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_GROUP_TAG: { 2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_LOADER_TAG: { 2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_OBJECT_TAG: { 2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.NO_TAG: { 2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes default: { 2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper JDWP.tag value = " + tag); 2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as byte. 2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the byte value. 2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsByte(byte val) { 2285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length + BYTE_SIZE; 2295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 2305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size - BYTE_SIZE); 2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data[new_data_size - BYTE_SIZE] = val; 2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as byte. 2375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as byte. 2395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte getNextValueAsByte() { 2415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index + BYTE_SIZE; 2425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return data[reading_data_index - BYTE_SIZE]; 2435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as boolean. 2475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 2495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the boolean value. 2505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsBoolean(boolean val) { 2525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int old_data_size = data.length; 2535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = old_data_size 2545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.BOOLEAN_ID); 2555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 2565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 2575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, old_data_size); 2585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (val) { 2595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data[old_data_size] = 1; 2605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } else { 2615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data[old_data_size] = 0; 2625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as boolean. 2675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as boolean. 2695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean getNextValueAsBoolean() { 2715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int res = (int) data[reading_data_index] & 0xFF; 2725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 2735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.BOOLEAN_ID); 2745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (res != 0); 2755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as short. 2795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 2815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the short value. 2825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsShort(short val) { 2845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 2855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.SHORT_ID); 2865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 2875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 2885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 2895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.SHORT_ID)); 2905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray((long) val, data, new_data_size 2915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.SHORT_ID), 2925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.SHORT_ID)); 2935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as short. 2975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as short. 2995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public short getNextValueAsShort() { 3015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 3025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.SHORT_ID); 3035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (short) readFromByteArray(data, reading_data_index 3045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.SHORT_ID), 3055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.SHORT_ID)); 3065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as int. 3105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 3125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the int value. 3135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsInt(int val) { 3155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 3165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.INT_ID); 3175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 3185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 3195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 3205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.INT_ID)); 3215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray((long) val, data, new_data_size 3225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.INT_ID), TypesLengths 3235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getTypeLength(TypesLengths.INT_ID)); 3245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as int. 3285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as int. 3305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getNextValueAsInt() { 3325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 3335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.INT_ID); 3345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (int) readFromByteArray(data, reading_data_index 3355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.INT_ID), TypesLengths 3365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getTypeLength(TypesLengths.INT_ID)); 3375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as double. 3415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param dval 3435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the double value. 3445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsDouble(double dval) { 3465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 3475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID); 3485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 3495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long val = Double.doubleToLongBits(dval); 3505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 3515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 3525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID)); 3535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray((long) val, data, new_data_size 3545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID), 3555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID)); 3565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as double. 3605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as double. 3625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public double getNextValueAsDouble() { 3645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 3655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID); 3665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long res = readFromByteArray(data, reading_data_index 3675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID), 3685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.DOUBLE_ID)); 3695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return Double.longBitsToDouble(res); 3715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as float. 3755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param fval 3775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the float value. 3785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsFloat(float fval) { 3805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 3815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FLOAT_ID); 3825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 3835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long val = Float.floatToIntBits(fval); 3845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 3855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 3865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FLOAT_ID)); 3875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray((long) val, data, new_data_size 3885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FLOAT_ID), 3895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.FLOAT_ID)); 3905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as float. 3945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as float. 3965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public float getNextValueAsFloat() { 3985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 3995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FLOAT_ID); 4005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long res = readFromByteArray(data, reading_data_index 4015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FLOAT_ID), 4025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.FLOAT_ID)); 4035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return Float.intBitsToFloat((int) res); 4055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as char. 4095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 4115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the char value. 4125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsChar(char val) { 4145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 4155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.CHAR_ID); 4165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 4175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 4185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 4195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.CHAR_ID)); 4205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray((long) val, data, new_data_size 4215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.CHAR_ID), 4225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.CHAR_ID)); 4235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as char. 4275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as char. 4295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public char getNextValueAsChar() { 4315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 4325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.CHAR_ID); 4335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (char) readFromByteArray(data, reading_data_index 4345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.CHAR_ID), 4355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.CHAR_ID)); 4365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as long. 4405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 4425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the long value. 4435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsLong(long val) { 4455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 4465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.LONG_ID); 4475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 4485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 4495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 4505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.LONG_ID)); 4515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray(val, data, new_data_size 4525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.LONG_ID), 4535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.LONG_ID)); 4545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as long. 4585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as long. 4605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsLong() { 4625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 4635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.LONG_ID); 4645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return readFromByteArray(data, reading_data_index 4655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.LONG_ID), 4665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.LONG_ID)); 4675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as String in the "UTF-8" 4715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Charset. 4725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 4745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the String in the "UTF-8" Charset. 4755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsString(String val) { 4775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 4785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte val_as_bytes[]; 4795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 4805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes val_as_bytes = val.getBytes("UTF-8"); 4815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (UnsupportedEncodingException e) { 4825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException(e); 4835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length + val_as_bytes.length 4855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.INT_ID); 4865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 4875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 4885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - val_as_bytes.length 4895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.INT_ID)); 4905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray((long) val_as_bytes.length, data, new_data_size 4915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - val_as_bytes.length 4925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.INT_ID), TypesLengths 4935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getTypeLength(TypesLengths.INT_ID)); 4945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(val_as_bytes, 0, data, new_data_size 4955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - val_as_bytes.length, val_as_bytes.length); 4965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as String in the "UTF-8" 5005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Charset. 5015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 5025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as String in the "UTF-8" 5035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Charset. 5045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getNextValueAsString() { 5065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int string_length = this.getNextValueAsInt(); 5075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String res = null; 5085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 5095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes res = new String(data, reading_data_index, string_length, "UTF-8"); 5105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (UnsupportedEncodingException e) { 5115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException(e); 5125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index + string_length; 5145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return res; 5155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 5185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as objectID VM-sensitive 5195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 5205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 5215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 5225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 5235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ObjectID value. 5245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsObjectID(long val) { 5265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) < 0 5275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) > 8) { 5285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper ObjectID value length = " 5295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.OBJECT_ID)); 5305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 5325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.OBJECT_ID); 5335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 5345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 5355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 5365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.OBJECT_ID)); 5375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray(val, data, new_data_size 5385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.OBJECT_ID), 5395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.OBJECT_ID)); 5405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 5435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as objectID VM-sensitive 5445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 5455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 5465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 5475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 5485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsObjectID() { 5505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) < 0 5515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) > 8) { 5525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper ObjectID value length = " 5535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) + "!"); 5545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 5565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.OBJECT_ID); 5575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (int) readFromByteArray(data, reading_data_index 5585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.OBJECT_ID), 5595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.OBJECT_ID)); 5605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 5635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ThreadID VM-sensitive 5645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 5655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 5665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 5675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 5685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ThreadID value. 5695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsThreadID(long val) { 5715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 5725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 5755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ThreadID VM-sensitive 5765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 5775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 5785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 5795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 5805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsThreadID() { 5825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 5835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 5865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ThreadGroupID 5875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 5885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the val value will be ignored. 5895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 5905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 5915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ThreadGroupID value. 5925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsThreadGroupID(long val) { 5945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 5955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 5985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ThreadGroupID 5995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 6005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the returned value can be ignored. 6015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 6035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsThreadGroupID() { 6055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 6065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as StringID VM-sensitive 6105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 6115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 6125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 6145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the StringID value. 6155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsStringID(long val) { 6175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 6185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as StringID VM-sensitive 6225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 6235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 6245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 6265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsStringID() { 6285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 6295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ClassLoaderID 6335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 6345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the val value will be ignored. 6355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 6375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ClassLoaderID value. 6385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsClassLoaderID(long val) { 6405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 6415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ClassLoaderID 6455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 6465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the returned value can be ignored. 6475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 6495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsClassLoaderID() { 6515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 6525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ClassObjectID 6565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 6575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the val value will be ignored. 6585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 6605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ClassObjectID value. 6615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsClassObjectID(long val) { 6635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 6645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ClassObjectID 6685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 6695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the returned value can be ignored. 6705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 6725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsClassObjectID() { 6745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 6755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ArrayID VM-sensitive 6795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 6805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 6815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 6835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ArrayID value. 6845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsArrayID(long val) { 6865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 6875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 6895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 6905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ArrayID VM-sensitive 6915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 6925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 6935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 6945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 6955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 6965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsClassArrayID() { 6975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 6985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 6995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ReferenceTypeID 7025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 7035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the val value will be ignored. 7045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 7065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ReferenceTypeID value. 7075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsReferenceTypeID(long val) { 7095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 7105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ReferenceTypeID 7145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 7155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the returned value can be ignored. 7165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 7185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsReferenceTypeID() { 7205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 7215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ClassID VM-sensitive 7255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 7265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 7275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 7295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ClassID value. 7305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsClassID(long val) { 7325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 7335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ClassID VM-sensitive 7375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 7385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 7395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 7415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsClassID() { 7435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 7445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as InterfaceID VM-sensitive 7485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 7495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 7505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 7525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the InterfaceID value. 7535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsInterfaceID(long val) { 7555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 7565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as InterfaceID VM-sensitive 7605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 7615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 7625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 7645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsInterfaceID() { 7665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 7675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ArrayTypeID VM-sensitive 7715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 7725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 7735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 7755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the ArrayTypeID value. 7765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsArrayTypeID(long val) { 7785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(val); 7795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ArrayTypeID VM-sensitive 7835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 7845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 7855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 7875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 7885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsArrayTypeID() { 7895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.getNextValueAsObjectID(); 7905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 7915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 7925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 7935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as tagged-objectID 7945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 7955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the val value will be ignored. 7965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 7975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param taggedObject 7985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * TaggedObject value. 7995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 8005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsTaggedObject(TaggedObject taggedObject) { 8015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsByte(taggedObject.tag); 8025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(taggedObject.objectID); 8035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 8055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 8065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as tagged-objectID 8075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 8085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the returned value can be ignored. 8095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 8105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 8115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 8125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public TaggedObject getNextValueAsTaggedObject() { 8135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) < 0 8145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.OBJECT_ID) > 8) { 8155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper ObjectID value length = " 8165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.OBJECT_ID)); 8175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TaggedObject taggedObject = new TaggedObject(); 8195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes taggedObject.tag = this.getNextValueAsByte(); 8205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes taggedObject.objectID = this.getNextValueAsObjectID(); 8215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return taggedObject; 8225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 8245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 8255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as MethodID VM-sensitive 8265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 8275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 8285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 8295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param methodID 8305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * MethodID value. 8315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 8325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsMethodID(long methodID) { 8335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.METHOD_ID) < 0 8345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.METHOD_ID) > 8) { 8355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper MethodID value length = " 8365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.METHOD_ID)); 8375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 8395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.METHOD_ID); 8405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 8415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 8425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 8435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.METHOD_ID)); 8445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray(methodID, data, new_data_size 8455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.METHOD_ID), 8465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.METHOD_ID)); 8475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 8495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 8505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as MethodID VM-sensitive 8515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 8525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 8535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 8545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 8555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 8565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsMethodID() { 8575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.METHOD_ID) < 0 8585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.METHOD_ID) > 8) { 8595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper MethodID value length = " 8605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.METHOD_ID)); 8615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 8635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.METHOD_ID); 8645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long result = readFromByteArray(data, reading_data_index 8655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.METHOD_ID), 8665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.METHOD_ID)); 8675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return result; 8685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 8705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 8715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as FieldID VM-sensitive 8725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 8735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 8745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 8755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param fieldID 8765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * FieldID value. 8775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 8785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsFieldID(long fieldID) { 8795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.FIELD_ID) < 0 8805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.FIELD_ID) > 8) { 8815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper FieldID value length = " 8825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FIELD_ID)); 8835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 8855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FIELD_ID); 8865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 8875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 8885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 8895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FIELD_ID)); 8905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray(fieldID, data, new_data_size 8915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FIELD_ID), 8925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.FIELD_ID)); 8935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 8945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 8955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 8965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as FieldID VM-sensitive 8975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 8985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 8995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 9005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 9015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 9025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsFieldID() { 9035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.FIELD_ID) < 0 9045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.FIELD_ID) > 8) { 9055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper FieldID value length = " 9065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FIELD_ID)); 9075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 9095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FIELD_ID); 9105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long result = readFromByteArray(data, reading_data_index 9115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FIELD_ID), 9125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.FIELD_ID)); 9135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return result; 9145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 9165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 9175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as FrameID VM-sensitive 9185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 9195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 9205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 9215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param frameID 9225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * FrameID value. 9235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 9245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsFrameID(long frameID) { 9255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.FRAME_ID) < 0 9265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.FRAME_ID) > 8) { 9275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper FrameID value length = " 9285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FRAME_ID)); 9295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int new_data_size = data.length 9315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FRAME_ID); 9325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte data_temp[] = data; 9335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes data = new byte[new_data_size]; 9345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data_temp, 0, data, 0, new_data_size 9355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FRAME_ID)); 9365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.writeAtByteArray(frameID, data, new_data_size 9375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FRAME_ID), 9385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.FRAME_ID)); 9395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 9415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 9425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as FrameID VM-sensitive 9435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 9445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 9455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 9465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 9475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 9485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getNextValueAsFrameID() { 9495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (TypesLengths.getTypeLength(TypesLengths.FRAME_ID) < 0 9505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || TypesLengths.getTypeLength(TypesLengths.FRAME_ID) > 8) { 9515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Improper FrameID value length = " 9525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FRAME_ID)); 9535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes reading_data_index = reading_data_index 9555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + TypesLengths.getTypeLength(TypesLengths.FRAME_ID); 9565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long result = readFromByteArray(data, reading_data_index 9575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes - TypesLengths.getTypeLength(TypesLengths.FRAME_ID), 9585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes TypesLengths.getTypeLength(TypesLengths.FRAME_ID)); 9595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return result; 9605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 9625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 9635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as Location VM-sensitive 9645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 9655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 9665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 9675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param location 9685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Location value. 9695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 9705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsLocation(Location location) { 9715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsByte(location.tag); 9725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsClassID(location.classID); 9735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsMethodID(location.methodID); 9745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsLong(location.index); 9755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 9775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 9785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as Location VM-sensitive 9795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 9805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 9815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 9825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 9835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 9845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Location getNextValueAsLocation() { 9855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Location location = new Location(); 9865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes location.tag = this.getNextValueAsByte(); 9875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes location.classID = this.getNextValueAsClassID(); 9885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes location.methodID = this.getNextValueAsMethodID(); 9895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes location.index = this.getNextValueAsLong(); 9905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return location; 9915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 9925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 9935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 9945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as Value VM-sensitive 9955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 9965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 9975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 9985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param value 9995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Value value. 10005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @throws UnsupportedEncodingException 10015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 10025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsValue(Value value) { 10035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsByte(value.getTag()); 10045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setNextValueAsUntaggedValue(value); 10055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 10065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 10075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 10085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as Value VM-sensitive 10095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 10105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 10115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 10125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 10135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 10145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Value getNextValueAsValue() { 10155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte tag = this.getNextValueAsByte(); 10165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getNextValueAsUntaggedValue(tag); 10175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 10185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 10195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 10205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as UntaggedValue 10215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 10225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the val value will be ignored. 10235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 10245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param value 10255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * UntaggedValue value. 10265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @throws UnsupportedEncodingException 10275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 10285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsUntaggedValue(Value value) { 10295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (value.getTag()) { 10305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: 10315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsBoolean(value.getBooleanValue()); 10325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: 10345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsByte(value.getByteValue()); 10355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CHAR_TAG: 10375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsChar(value.getCharValue()); 10385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: 10405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsDouble(value.getDoubleValue()); 10415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: 10435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsFloat(value.getFloatValue()); 10445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: 10465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsInt(value.getIntValue()); 10475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: 10495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsLong(value.getLongValue()); 10505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: 10525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsShort(value.getShortValue()); 10535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.VOID_TAG: 10555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.STRING_TAG: 10575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.ARRAY_TAG: 10585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_LOADER_TAG: 10595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_OBJECT_TAG: 10605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.OBJECT_TAG: 10615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_GROUP_TAG: 10625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_TAG: 10635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsObjectID(value.getLongValue()); 10645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes default: 10665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Illegal tag value = " 10675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + value.getTag()); 10685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 10695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 10705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 10715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 10725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as UntaggedValue 10735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * VM-sensitive value. If length is less than 8 bytes, the appropriate high 10745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bits in the returned value can be ignored. 10755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 10765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 10775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 10785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Value getNextValueAsUntaggedValue(byte tag) { 10795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Value value = null; 10805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (tag) { 10815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: 10825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsBoolean()); 10835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: 10855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsByte()); 10865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CHAR_TAG: 10885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsChar()); 10895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: 10915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsDouble()); 10925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: 10945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsFloat()); 10955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: 10975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsInt()); 10985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 10995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: 11005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsLong()); 11015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: 11035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(this.getNextValueAsShort()); 11045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.STRING_TAG: 11065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.ARRAY_TAG: 11075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_LOADER_TAG: 11085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_OBJECT_TAG: 11095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.OBJECT_TAG: 11105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_GROUP_TAG: 11115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_TAG: 11125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes value = new Value(tag, this.getNextValueAsObjectID()); 11135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 1114c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz case JDWPConstants.Tag.VOID_TAG: 1115c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz // no bytes to read. 1116c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz break; 11175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes default: 11185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Illegal tag value = " + tag); 11195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return value; 11215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 11235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 11245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets the next value of the data of the Packet as ArrayRegion VM-sensitive 11255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 11265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * val value will be ignored. 11275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 11285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param array 11295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ArrayRegion value. 11305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @throws UnsupportedEncodingException 11315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 11325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // public void setNextValueAsArrayRegion(ArrayRegion array) throws 11335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // UnsupportedEncodingException { 11345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setNextValueAsArrayRegion(ArrayRegion array) { 11355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsByte(array.getTag()); 11365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsInt(array.getLength()); 11375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes for (int i = 0; i < array.getLength(); i++) { 11385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (isValuePrimitiveType(array.getTag())) { 11395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (array.getTag()) { 11405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: 11415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsBoolean(array.getValue(i) 11425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getBooleanValue()); 11435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: 11455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsByte(array.getValue(i).getByteValue()); 11465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: 11485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsDouble(array.getValue(i) 11495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getDoubleValue()); 11505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: 11525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsFloat(array.getValue(i).getFloatValue()); 11535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: 11555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsInt(array.getValue(i).getIntValue()); 11565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: 11585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsLong(array.getValue(i).getLongValue()); 11595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: 11615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsShort(array.getValue(i).getShortValue()); 11625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 11635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes default: 11645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Illegal tag value = " 11655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + array.getTag()); 11665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } else { 11685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.setNextValueAsValue(array.getValue(i)); 11695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 11735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 11745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the next value of the data of the Packet as ArrayRegion VM-sensitive 11755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value. If length is less than 8 bytes, the appropriate high bits in the 11765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * returned value can be ignored. 11775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 11785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return the next value of the data of the Packet as VM-sensitive value. 11795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 11805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public ArrayRegion getNextValueAsArrayRegion() { 11815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte array_tag = this.getNextValueAsByte(); 11825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int array_length = this.getNextValueAsInt(); 11835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 11845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ArrayRegion array = new ArrayRegion(array_tag, array_length); 11855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 11865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes for (int i = 0; i < array_length; i++) { 11875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (isValuePrimitiveType(array_tag)) 11885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes array.setValue(i, this.getNextValueAsUntaggedValue(array_tag)); 11895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes else 11905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes array.setValue(i, this.getNextValueAsValue()); 11915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return array; 11935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 11945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 11955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 11965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets the representation of the Packet as array of bytes in the JDWP 11975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * format including header and data sections. 11985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 11995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return bytes representation of this packet 12005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte[] toBytesArray() { 12025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte res[] = new byte[data.length + HEADER_SIZE]; 12035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes writeAtByteArray(data.length + HEADER_SIZE, res, LENGTH_INDEX, INT_SIZE); 12045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes writeAtByteArray(id, res, ID_INDEX, INT_SIZE); 12055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes res[FLAGS_INDEX] = flags; 12065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes System.arraycopy(data, 0, res, HEADER_SIZE, data.length); 12075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return res; 12085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Reads value from array of bytes ar[] starting form index and reading size 12125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bytes. If size is less than 8, the appropriate high bits in the resulting 12135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * long value will be zero. 12145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param ar 12165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the array of bytes where the value is read from. 12175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param from 12185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * index to start reading bytes. 12195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param size 12205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * number of bytes to read 12215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected static long readFromByteArray(byte ar[], int from, int size) { 12235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long res = 0; 12245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes byte temp; 12255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes for (int i = 0; i < size; i++) { 12265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes temp = ar[from + i]; 12275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes res = (res << 8) | (((long) temp) & 0xFF); 12285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return res; 12305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Tells whether the packet is reply. 12345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true if this packet is reply, false if it is command 12365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isReply() { 12385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (flags & REPLY_PACKET_FLAG) != 0; 12395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Checks whether all data has been read from the packet. 12435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return boolean 12455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isAllDataRead() { 12475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return reading_data_index == data.length; 12485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Writes value - val to the array of bytes ar[], beginning from index - to, 12525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * size of value is - size bytes. If size is less than 8, the appropriate 12535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * high bits in the val value will be ignored. 12545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param val 12565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the value, which will be written in the array. 12575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param ar 12585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the array of bytes where the value is read from. 12595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param to 12605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the beginning index in the array of bytes. 12615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param size 12625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * size of value in bytes. 12635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected void writeAtByteArray(long val, byte ar[], int to, int size) { 12655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes for (int i = 0; i < size; i++) { 12665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ar[to + i] = (byte) (val >> 8 * (size - 1 - i)); 12675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns true if this bytes array can be interpreted as reply packet. 12725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param p 12745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bytes representation of packet 12755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true or false 12765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static boolean isReply(byte[] p) { 12785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (p.length < FLAGS_INDEX) 12795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 12805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (p[FLAGS_INDEX] & REPLY_PACKET_FLAG) != 0; 12815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns packet length from header of given packet bytes. 12855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param p 12875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bytes representation of packet 12885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true or false 12895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 12905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static int getPacketLength(byte[] p) { 12915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (int) readFromByteArray(p, LENGTH_INDEX, INT_SIZE); 12925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 12935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 12945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 12955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Enwraps this bytes array either to ReplyPacket or EventPacket instance, 12965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * according to result of isReply(). 12975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 12985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param p 12995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * bytes array to enwrap into packet 13005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return new created ReplyPacket or CommandPacket 13015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 13025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static Packet interpretPacket(byte[] p) { 13035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (p.length < HEADER_SIZE) 13045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Wrong packet"); 13055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (Packet.isReply(p)) 13065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return new ReplyPacket(p); 13075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return new EventPacket(p); 13085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 13095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes} 1310