/* * RED5 Open Source Flash Server - http://code.google.com/p/red5/ * * Copyright 2006-2012 by respective authors (see below). All rights reserved. * * Licensed 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.red5.io.amf3; /** * AMF3 data type definitions. * * For detailed specification please see the link below. * * @see <a href="http://osflash.org/amf3/index">AMF3 specification (external)</a> * @see <a href="http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf">Official Adobe AMF3 Specification</a> * * @author The Red5 Project (red5@osflash.org) * @author Luke Hubbard, Codegent Ltd (luke@codegent.com) * @author Joachim Bauch (jojo@struktur.de) * @author Paul Gregoire (mondain@gmail.com) */ public class AMF3 { /** * Minimum possible value for integer number encoding. */ public static final long MIN_INTEGER_VALUE = -268435456; /** * Maximum possible value for integer number encoding. */ public static final long MAX_INTEGER_VALUE = 268435455; /** * Max string length */ public static final int LONG_STRING_LENGTH = 65535; /** * Undefined marker */ public static final byte TYPE_UNDEFINED = 0x00; /** * Null marker */ public static final byte TYPE_NULL = 0x01; /** * Boolean false marker */ public static final byte TYPE_BOOLEAN_FALSE = 0x02; /** * Boolean true marker */ public static final byte TYPE_BOOLEAN_TRUE = 0x03; /** * Integer marker */ public static final byte TYPE_INTEGER = 0x04; /** * Number marker */ public static final byte TYPE_NUMBER = 0x05; /** * String marker */ public static final byte TYPE_STRING = 0x06; /** * XML document marker * <br /> * This is for the legacy XMLDocument type is retained in the language * as flash.xml.XMLDocument. Similar to AMF 0, the structure of an * XMLDocument needs to be flattened into a string representation for * serialization. As with other strings in AMF, the content is encoded in * UTF-8. * XMLDocuments can be sent as a reference to a previously occurring * XMLDocument instance by using an index to the implicit object reference * table. */ public static final byte TYPE_XML_DOCUMENT = 0x07; /** * Date marker */ public static final byte TYPE_DATE = 0x08; /** * Array start marker */ public static final byte TYPE_ARRAY = 0x09; /** * Object start marker */ public static final byte TYPE_OBJECT = 0x0A; /** * XML start marker */ public static final byte TYPE_XML = 0x0B; /** * ByteArray marker */ public static final byte TYPE_BYTEARRAY = 0x0C; /** * Vector<int> marker */ public static final byte TYPE_VECTOR_INT = 0x0D; /** * Vector<uint> marker */ public static final byte TYPE_VECTOR_UINT = 0x0E; /** * Vector<Number> marker */ public static final byte TYPE_VECTOR_NUMBER = 0x0F; /** * Vector<Object> marker */ public static final byte TYPE_VECTOR_OBJECT = 0x10; /** * Property list encoding. * * The remaining integer-data represents the number of class members * that exist. The property names are read as string-data. The values * are then read as AMF3-data. */ public static final byte TYPE_OBJECT_PROPERTY = 0x00; /** * Externalizable object. * * What follows is the value of the "inner" object, including type code. * This value appears for objects that implement IExternalizable, such * as ArrayCollection and ObjectProxy. */ public static final byte TYPE_OBJECT_EXTERNALIZABLE = 0x01; /** * Name-value encoding. * * The property names and values are encoded as string-data followed by * AMF3-data until there is an empty string property name. If there is * a class-def reference there are no property names and the number of * values is equal to the number of properties in the class-def. */ public static final byte TYPE_OBJECT_VALUE = 0x02; /** * Proxy object. */ public static final byte TYPE_OBJECT_PROXY = 0x03; }