package org.red5.io.amf3;
/*
* RED5 Open Source Flash Server - http://code.google.com/p/red5/
*
* Copyright (c) 2006-2010 by respective authors (see below). All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 2.1 of the License, or (at your option) any later
* version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with this library; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import java.nio.charset.Charset;
/**
* 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 {
/**
* UTF-8 is used
*/
public static final Charset CHARSET = Charset.forName("UTF-8");
/**
* 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;
}