/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.internal;
import org.apache.geode.DataSerializer;
/**
* An interface that contains a bunch of static final values used for the implementation of
* {@link DataSerializer}. It is basically an Enum and could be changed to one once we drop 1.4. The
* allowed range of these codes is -128..127 inclusive (i.e. byte).
*
* @since GemFire 5.7
*/
public interface DSCODE {
/**
* This byte value, -128, has never been used in any GemFire release so far. It might get used in
* the future to introduce DataSerializer versioning.
*/
public static final byte RESERVED_FOR_FUTURE_USE = -128;
public static final byte ILLEGAL = -127;
// -126..0 unused
/**
* A header byte meaning that the next element in the stream is a {@link DataSerializableFixedID}
* whose id is a single signed byte.
*
* @since GemFire 5.7
*/
public static final byte DS_FIXED_ID_BYTE = 1;
/**
* A header byte meaning that the next element in the stream is a {@link DataSerializableFixedID}
* whose id is a single signed short.
*
* @since GemFire 5.7
*/
public static final byte DS_FIXED_ID_SHORT = 2;
/**
* A header byte meaning that the next element in the stream is a {@link DataSerializableFixedID}
* whose id is a single signed int.
*
* @since GemFire 5.7
*/
public static final byte DS_FIXED_ID_INT = 3;
/**
* A header byte meaning that the next element in the stream is a {@link DataSerializableFixedID}
* whose id is <code>NO_FIXED_ID</code>.
*
* @since GemFire 5.7
*/
public static final byte DS_NO_FIXED_ID = 4;
/**
* A header byte meaning that the object was serialized by a user's <code>DataSerializer</code>
* and the id is encoded with 2 bytes.
*
* @since GemFire 5.7
*/
public static final byte USER_CLASS_2 = 5;
/**
* A header byte meaning that the object was serialized by a user's <code>DataSerializer</code>
* and the id is encoded with 4 bytes.
*
* @since GemFire 5.7
*/
public static final byte USER_CLASS_4 = 6;
// TypeIds 7 and 8 reserved for use by C# Serializable and XmlSerializable.
// 9 unused
/**
* A header byte meaning that the next element in the stream is a <code>LinkedList</code>.
*/
public static final byte LINKED_LIST = 10;
/**
* A header byte meaning that the next element in the stream is a <code>Properties</code>.
*
* @since GemFire 5.7
*/
public static final byte PROPERTIES = 11;
// 12..16 unused
/**
* Codes for the primitive classes, which cannot be recreated with
* <code>Class.forName(String,boolean,ClassLoader)</code> like other classes
*/
public static final byte BOOLEAN_TYPE = 17;
public static final byte CHARACTER_TYPE = 18;
public static final byte BYTE_TYPE = 19;
public static final byte SHORT_TYPE = 20;
public static final byte INTEGER_TYPE = 21;
public static final byte LONG_TYPE = 22;
public static final byte FLOAT_TYPE = 23;
public static final byte DOUBLE_TYPE = 24;
public static final byte VOID_TYPE = 25;
/**
* @since GemFire 5.7
*/
public static final byte BOOLEAN_ARRAY = 26;
/**
* @since GemFire 5.7
*/
public static final byte CHAR_ARRAY = 27;
// 28..36 unused
/**
* A header byte meaning that a DataSerializable that was registered with the Instantiator was
* data serialized using four bytes for its ID.
*
* @since GemFire 5.7
*/
public static final byte USER_DATA_SERIALIZABLE_4 = 37;
/**
* A header byte meaning that a DataSerializable that was registered with the Instantiator was
* data serialized using two bytes for its ID.
*
* @since GemFire 5.7
*/
public static final byte USER_DATA_SERIALIZABLE_2 = 38;
/**
* A header byte meaning that a DataSerializable that was registered with the Instantiator was
* data serialized using a single byte for its ID.
*/
public static final byte USER_DATA_SERIALIZABLE = 39;
/**
* A header byte meaning that the object was serialized by a user's <code>DataSerializer</code>.
*/
public static final byte USER_CLASS = 40;
/**
* A header byte meaning that the next element in the stream is a <code>null</code>
*/
public static final byte NULL = 41;
/**
* A header byte meaning that the next element in the stream is a String
*/
public static final byte STRING = 42;
/**
* A header byte meaning that the next element in the stream is a (non-primitive) Class
*/
public static final byte CLASS = 43;
/**
* A header byte meaning that the next element in the stream is a serialized object
*/
public static final byte SERIALIZABLE = 44;
/**
* A header byte meaning that the next element in the stream is a DataSerializable object
*/
public static final byte DATA_SERIALIZABLE = 45;
/**
* A header byte meaning that the next element in the stream is a <code>byte</code> array.
*/
public static final byte BYTE_ARRAY = 46;
/**
* A header byte meaning that the next element in the stream is a <code>short</code> array.
*/
public static final byte SHORT_ARRAY = 47;
/**
* A header byte meaning that the next element in the stream is a <code>int</code> array.
*/
public static final byte INT_ARRAY = 48;
/**
* A header byte meaning that the next element in the stream is a <code>long</code> array.
*/
public static final byte LONG_ARRAY = 49;
/**
* A header byte meaning that the next element in the stream is a <code>float</code> array.
*/
public static final byte FLOAT_ARRAY = 50;
/**
* A header byte meaning that the next element in the stream is a <code>double</code> array.
*/
public static final byte DOUBLE_ARRAY = 51;
/**
* A header byte meaning that the next element in the stream is a <code>Object</code> array.
*/
public static final byte OBJECT_ARRAY = 52;
/**
* A header boolean meaning that the next element in the stream is a <code>Boolean</code>.
*/
public static final byte BOOLEAN = 53;
/**
* A header byte meaning that the next element in the stream is a <code>Character</code>.
*/
public static final byte CHARACTER = 54;
/**
* A header byte meaning that the next element in the stream is a <code>Byte</code>.
*/
public static final byte BYTE = 55;
/**
* A header byte meaning that the next element in the stream is a <code>Short</code>.
*/
public static final byte SHORT = 56;
/**
* A header byte meaning that the next element in the stream is a <code>Integer</code>.
*/
public static final byte INTEGER = 57;
/**
* A header byte meaning that the next element in the stream is a <code>Long</code>.
*/
public static final byte LONG = 58;
/**
* A header byte meaning that the next element in the stream is a <code>Float</code>.
*/
public static final byte FLOAT = 59;
/**
* A header byte meaning that the next element in the stream is a <code>Double</code>.
*/
public static final byte DOUBLE = 60;
/**
* A header byte meaning that the next element in the stream is a <code>Date</code>.
*/
public static final byte DATE = 61;
/**
* A header byte meaning that the next element in the stream is a <code>InetAddress</code>.
*/
public static final byte INET_ADDRESS = 62;
/**
* A header byte meaning that the next element in the stream is a <code>File</code>.
*/
public static final byte FILE = 63;
/**
* A header byte meaning that the next element in the stream is a <code>String</code> array.
*/
public static final byte STRING_ARRAY = 64;
/**
* A header byte meaning that the next element in the stream is a <code>ArrayList</code>.
*/
public static final byte ARRAY_LIST = 65;
/**
* A header byte meaning that the next element in the stream is a <code>HashSet</code>.
*/
public static final byte HASH_SET = 66;
/**
* A header byte meaning that the next element in the stream is a <code>HashMap</code>.
*/
public static final byte HASH_MAP = 67;
/**
* A header byte meaning that the next element in the stream is a <code>TimeUnit</code>.
*/
public static final byte TIME_UNIT = 68;
/**
* A header byte meaning that the next element in the stream is a <code>null</code>
* <code>String</code>.
*/
public static final byte NULL_STRING = 69;
/**
* A header byte meaning that the next element in the stream is a <code>Hashtable</code>.
*
* @since GemFire 5.7
*/
public static final byte HASH_TABLE = 70;
/**
* A header byte meaning that the next element in the stream is a <code>Vector</code>.
*
* @since GemFire 5.7
*/
public static final byte VECTOR = 71;
/**
* A header byte meaning that the next element in the stream is a <code>IdentityHashMap</code>.
*
* @since GemFire 5.7
*/
public static final byte IDENTITY_HASH_MAP = 72;
/**
* A header byte meaning that the next element in the stream is a <code>LinkedHashSet</code>.
*
* @since GemFire 5.7
*/
public static final byte LINKED_HASH_SET = 73;
/**
* A header byte meaning that the next element in the stream is a <code>Stack</code>.
*
* @since GemFire 5.7
*/
public static final byte STACK = 74;
/**
* A header byte meaning that the next element in the stream is a <code>TreeMap</code>.
*
* @since GemFire 5.7
*/
public static final byte TREE_MAP = 75;
/**
* A header byte meaning that the next element in the stream is a <code>TreeSet</code>.
*
* @since GemFire 5.7
*/
public static final byte TREE_SET = 76;
// 75..86 unused
/**
* A header byte meaning that the next element in the stream is a buffer of 1-byte characters to
* turn into a String whose length is <= 0xFFFF
*/
public static final byte STRING_BYTES = 87;
/**
* A header byte meaning that the next element in the stream is a buffer of 1-byte characters to
* turn into a String whose length is > 0xFFFF.
*
* @since GemFire 5.7
*/
public static final byte HUGE_STRING_BYTES = 88;
/**
* A header byte meaning that the next element in the stream is a buffer of 2-byte characters to
* turn into a String whose length is > 0xFFFF.
*
* @since GemFire 5.7
*/
public static final byte HUGE_STRING = 89;
// 90 unused
/**
* A header byte meaning that the next element in the stream is a <code>byte[][]</code>.
*/
public static final byte ARRAY_OF_BYTE_ARRAYS = 91;
// 92 unused
/**
* A header byte meaning that the next element in the stream is a PdxSerializable object.
*
* @since GemFire 6.6
*/
public static final byte PDX = 93;
/**
* A header byte meaning that the next element in the stream is an enum whose type is defined in
* the pdx registry.
*
* @since GemFire 6.6.2
*/
public static final byte PDX_ENUM = 94;
/**
* java.math.BigInteger
*
* @since GemFire 6.6.2
*/
public static final byte BIG_INTEGER = 95;
/**
* java.math.BigDecimal
*
* @since GemFire 6.6.2
*/
public static final byte BIG_DECIMAL = 96;
/**
* This code can only be used by PDX. It can't be used for normal DataSerializer writeObject
* because it would break backward compatibility. A header byte meaning that the next element in
* the stream is a ConcurrentHashMap object.
*
* @since GemFire 6.6
*/
public static final byte CONCURRENT_HASH_MAP = 97;
/**
* java.util.UUID
*
* @since GemFire 6.6.2
*/
public static final byte UUID = 98;
/**
* java.sql.Timestamp
*
* @since GemFire 6.6.2
*/
public static final byte TIMESTAMP = 99;
/**
* Used for enums that need to always be deserialized into their enum domain class.
*
* @since GemFire 6.6.2
*/
public static final byte GEMFIRE_ENUM = 100;
/**
* Used for enums that need to be encoded inline because the pdx registry may not be available.
* During deserialization this type of enum may be deserialized as a PdxInstance.
*
* @since GemFire 6.6.2
*/
public static final byte PDX_INLINE_ENUM = 101;
/**
* Used for wildcard searches in soplogs with composite keys.
*
* @since GemFire 8.0
*/
public static final byte WILDCARD = 102;
// 103..127 unused
// DO NOT USE CODES > 127. They are not "byte".
}