com.wowza.wms.amf
Class AMFData

Object
  extended by com.wowza.wms.amf.AMFData
Direct Known Subclasses:
AMFDataArray, AMFDataByteArray, AMFDataItem, AMFDataList, AMFDataObj

public abstract class AMFData
extends Object

Base abstract class for data in Action Message Format (AMF). Data is sent between the Flash client and the Wowza Media Server using the AMF format. This class cannot be instantiated. It serves as the base class for all AMFData objects.


Field Summary
static byte AMF_LEVEL0
           
static byte AMF_LEVEL3
           
static byte DATA_TYPE_AMF3
           
static byte DATA_TYPE_AMF3_ARRAY
           
static byte DATA_TYPE_AMF3_BOOLEAN_FALSE
           
static byte DATA_TYPE_AMF3_BOOLEAN_TRUE
           
static byte DATA_TYPE_AMF3_BYTEARRAY
           
static byte DATA_TYPE_AMF3_DATE
           
static byte DATA_TYPE_AMF3_INTEGER
           
static byte DATA_TYPE_AMF3_NULL
           
static byte DATA_TYPE_AMF3_NUMBER
           
static byte DATA_TYPE_AMF3_OBJECT
           
static byte DATA_TYPE_AMF3_STRING
           
static byte DATA_TYPE_AMF3_UNDEFINED
           
static byte DATA_TYPE_AMF3_XML_LEGACY
           
static byte DATA_TYPE_AMF3_XML_TOP
           
static byte DATA_TYPE_ARRAY
           
static byte DATA_TYPE_AS_OBJECT
           
static byte DATA_TYPE_BOOLEAN
           
static byte DATA_TYPE_BYTEARRAY
           
static byte DATA_TYPE_CUSTOM_CLASS
           
static byte DATA_TYPE_DATE
           
static byte DATA_TYPE_INTEGER
           
static byte DATA_TYPE_LONG_STRING
           
static byte DATA_TYPE_MIXED_ARRAY
           
static byte DATA_TYPE_MOVIE_CLIP
           
static byte DATA_TYPE_NULL
           
static byte DATA_TYPE_NUMBER
           
static byte DATA_TYPE_OBJECT
           
static byte DATA_TYPE_OBJECT_END
           
static byte DATA_TYPE_RECORDSET
           
static byte DATA_TYPE_REFERENCE_OBJECT
           
static byte DATA_TYPE_STRING
           
static byte DATA_TYPE_UNDEFINED
           
static byte DATA_TYPE_UNKNOWN
           
static byte DATA_TYPE_XML
           
static byte DATA_TYPE_XML_TOP
           
static int MILLS_PER_HOUR
          Number of milliseconds in an hour
protected  int type
           
 
Constructor Summary
AMFData()
           
 
Method Summary
static AMFDataContextDeserialize createContextDeserialize()
          Create an AMF3 deserialization context
static AMFDataContextDeserialize createContextDeserialize(int objectEncoding)
          Create an AMF3 deserialization context
static AMFDataContextSerialize createContextSerialize()
          Create an AMF3 serialization context
static AMFDataContextSerialize createContextSerialize(int objectEncoding)
          Create an AMF3 serialization context
abstract  void deserialize(java.nio.ByteBuffer data)
          Deserialize data in byte buffer
abstract  void deserialize(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Deserialize data in byte buffer
static AMFData deserializeInnerObject(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Deserialize next item
static AMFData getReference(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Get AMF3 object reference
 int getType()
          Returns the data type for this object
abstract  Object getValue()
          Convert object to Java native class
static boolean isAMF3Start(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Returns true if next byte in data is AMF3 start
static boolean isArrayStart(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Returns true if next byte in data is an array start
static boolean isByteArrayStart(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Returns true if next byte is ByteArray start
static boolean isMixedArrayStart(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Returns true if next byte in data is mixed array start
static boolean isObjEnd(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Returns true if next byte is object end
static boolean isObjStart(java.nio.ByteBuffer data, AMFDataContextDeserialize context)
          Returns true if next byte in data is object start
static int peekByte(java.nio.ByteBuffer data)
          Return the next byte in the buffer without incrementing the data position
abstract  byte[] serialize()
          Serial object to byte array
abstract  byte[] serialize(AMFDataContextSerialize context)
          Serial object to byte array
abstract  void serialize(java.io.DataOutputStream out)
          Serialize object to output stream
abstract  void serialize(java.io.DataOutputStream out, AMFDataContextSerialize context)
          Serialize object to output stream
abstract  void serialize(java.io.DataOutputStream out, int objectEncoding)
          Serialize object to output stream
abstract  byte[] serialize(int objectEncoding)
          Serial object to byte array
 void setType(int type)
          Sets the the data type for this object
static int skipByte(java.nio.ByteBuffer data)
          Skip forward one byte in the byte buffer
static boolean testNextByte(java.nio.ByteBuffer data, int test)
          Peek at the next value in data to see if its the test value
static boolean triggerAMF3Switch(AMFData data)
          Return true if the object is serialized differently in AMF3
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

AMF_LEVEL0

public static final byte AMF_LEVEL0
See Also:
Constant Field Values

AMF_LEVEL3

public static final byte AMF_LEVEL3
See Also:
Constant Field Values

DATA_TYPE_AMF3

public static final byte DATA_TYPE_AMF3
See Also:
Constant Field Values

DATA_TYPE_AMF3_ARRAY

public static final byte DATA_TYPE_AMF3_ARRAY
See Also:
Constant Field Values

DATA_TYPE_AMF3_BOOLEAN_FALSE

public static final byte DATA_TYPE_AMF3_BOOLEAN_FALSE
See Also:
Constant Field Values

DATA_TYPE_AMF3_BOOLEAN_TRUE

public static final byte DATA_TYPE_AMF3_BOOLEAN_TRUE
See Also:
Constant Field Values

DATA_TYPE_AMF3_BYTEARRAY

public static final byte DATA_TYPE_AMF3_BYTEARRAY
See Also:
Constant Field Values

DATA_TYPE_AMF3_DATE

public static final byte DATA_TYPE_AMF3_DATE
See Also:
Constant Field Values

DATA_TYPE_AMF3_INTEGER

public static final byte DATA_TYPE_AMF3_INTEGER
See Also:
Constant Field Values

DATA_TYPE_AMF3_NULL

public static final byte DATA_TYPE_AMF3_NULL
See Also:
Constant Field Values

DATA_TYPE_AMF3_NUMBER

public static final byte DATA_TYPE_AMF3_NUMBER
See Also:
Constant Field Values

DATA_TYPE_AMF3_OBJECT

public static final byte DATA_TYPE_AMF3_OBJECT
See Also:
Constant Field Values

DATA_TYPE_AMF3_STRING

public static final byte DATA_TYPE_AMF3_STRING
See Also:
Constant Field Values

DATA_TYPE_AMF3_UNDEFINED

public static final byte DATA_TYPE_AMF3_UNDEFINED
See Also:
Constant Field Values

DATA_TYPE_AMF3_XML_LEGACY

public static final byte DATA_TYPE_AMF3_XML_LEGACY
See Also:
Constant Field Values

DATA_TYPE_AMF3_XML_TOP

public static final byte DATA_TYPE_AMF3_XML_TOP
See Also:
Constant Field Values

DATA_TYPE_ARRAY

public static final byte DATA_TYPE_ARRAY
See Also:
Constant Field Values

DATA_TYPE_AS_OBJECT

public static final byte DATA_TYPE_AS_OBJECT
See Also:
Constant Field Values

DATA_TYPE_BOOLEAN

public static final byte DATA_TYPE_BOOLEAN
See Also:
Constant Field Values

DATA_TYPE_BYTEARRAY

public static final byte DATA_TYPE_BYTEARRAY
See Also:
Constant Field Values

DATA_TYPE_CUSTOM_CLASS

public static final byte DATA_TYPE_CUSTOM_CLASS
See Also:
Constant Field Values

DATA_TYPE_DATE

public static final byte DATA_TYPE_DATE
See Also:
Constant Field Values

DATA_TYPE_INTEGER

public static final byte DATA_TYPE_INTEGER
See Also:
Constant Field Values

DATA_TYPE_LONG_STRING

public static final byte DATA_TYPE_LONG_STRING
See Also:
Constant Field Values

DATA_TYPE_MIXED_ARRAY

public static final byte DATA_TYPE_MIXED_ARRAY
See Also:
Constant Field Values

DATA_TYPE_MOVIE_CLIP

public static final byte DATA_TYPE_MOVIE_CLIP
See Also:
Constant Field Values

DATA_TYPE_NULL

public static final byte DATA_TYPE_NULL
See Also:
Constant Field Values

DATA_TYPE_NUMBER

public static final byte DATA_TYPE_NUMBER
See Also:
Constant Field Values

DATA_TYPE_OBJECT

public static final byte DATA_TYPE_OBJECT
See Also:
Constant Field Values

DATA_TYPE_OBJECT_END

public static final byte DATA_TYPE_OBJECT_END
See Also:
Constant Field Values

DATA_TYPE_RECORDSET

public static final byte DATA_TYPE_RECORDSET
See Also:
Constant Field Values

DATA_TYPE_REFERENCE_OBJECT

public static final byte DATA_TYPE_REFERENCE_OBJECT
See Also:
Constant Field Values

DATA_TYPE_STRING

public static final byte DATA_TYPE_STRING
See Also:
Constant Field Values

DATA_TYPE_UNDEFINED

public static final byte DATA_TYPE_UNDEFINED
See Also:
Constant Field Values

DATA_TYPE_UNKNOWN

public static final byte DATA_TYPE_UNKNOWN
See Also:
Constant Field Values

DATA_TYPE_XML

public static final byte DATA_TYPE_XML
See Also:
Constant Field Values

DATA_TYPE_XML_TOP

public static final byte DATA_TYPE_XML_TOP
See Also:
Constant Field Values

MILLS_PER_HOUR

public static final int MILLS_PER_HOUR
Number of milliseconds in an hour

See Also:
Constant Field Values

type

protected int type
Constructor Detail

AMFData

public AMFData()
Method Detail

createContextDeserialize

public static AMFDataContextDeserialize createContextDeserialize()
Create an AMF3 deserialization context

Returns:
AMF3 deserialization context

createContextDeserialize

public static AMFDataContextDeserialize createContextDeserialize(int objectEncoding)
Create an AMF3 deserialization context

Parameters:
objectEncoding - object encoding level (see AMF_LEVEL*)
Returns:
AMF3 deserialization context

createContextSerialize

public static AMFDataContextSerialize createContextSerialize()
Create an AMF3 serialization context

Returns:
AMF3 serialization context

createContextSerialize

public static AMFDataContextSerialize createContextSerialize(int objectEncoding)
Create an AMF3 serialization context

Parameters:
objectEncoding - object encoding level (see AMF_LEVEL*)
Returns:
AMF3 serialization context

deserialize

public abstract void deserialize(java.nio.ByteBuffer data)
Deserialize data in byte buffer

Parameters:
data - binary data

deserialize

public abstract void deserialize(java.nio.ByteBuffer data,
                                 AMFDataContextDeserialize context)
Deserialize data in byte buffer

Parameters:
data - binary data
context - deserialization context used by AMF3

deserializeInnerObject

public static AMFData deserializeInnerObject(java.nio.ByteBuffer data,
                                             AMFDataContextDeserialize context)
                                      throws java.io.IOException
Deserialize next item

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
deserialized object
Throws:
java.io.IOException

getReference

public static AMFData getReference(java.nio.ByteBuffer data,
                                   AMFDataContextDeserialize context)
Get AMF3 object reference

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
null if not a reference else referenced object

getType

public int getType()
Returns the data type for this object

Returns:
object type DATA_TYPE_*

getValue

public abstract Object getValue()
Convert object to Java native class

Returns:
java native class

isAMF3Start

public static boolean isAMF3Start(java.nio.ByteBuffer data,
                                  AMFDataContextDeserialize context)
Returns true if next byte in data is AMF3 start

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
Returns true if next byte in data is object start

isArrayStart

public static boolean isArrayStart(java.nio.ByteBuffer data,
                                   AMFDataContextDeserialize context)
Returns true if next byte in data is an array start

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
Returns true if next byte in data is and array start

isByteArrayStart

public static boolean isByteArrayStart(java.nio.ByteBuffer data,
                                       AMFDataContextDeserialize context)
Returns true if next byte is ByteArray start

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
true if next byte in object end

isMixedArrayStart

public static boolean isMixedArrayStart(java.nio.ByteBuffer data,
                                        AMFDataContextDeserialize context)
Returns true if next byte in data is mixed array start

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
Returns true if next byte in data is mixed array start

isObjEnd

public static boolean isObjEnd(java.nio.ByteBuffer data,
                               AMFDataContextDeserialize context)
Returns true if next byte is object end

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
Returns true if next byte in object end

isObjStart

public static boolean isObjStart(java.nio.ByteBuffer data,
                                 AMFDataContextDeserialize context)
Returns true if next byte in data is object start

Parameters:
data - binary data being deserialized
context - deserialization context
Returns:
Returns true if next byte in data is object start

peekByte

public static int peekByte(java.nio.ByteBuffer data)
Return the next byte in the buffer without incrementing the data position

Parameters:
data - binary data being deserialized
Returns:
next byte in buffer

serialize

public abstract byte[] serialize()
Serial object to byte array

Returns:
serialized byte array

serialize

public abstract byte[] serialize(AMFDataContextSerialize context)
Serial object to byte array

Parameters:
context - serialization context used by AMF3
Returns:
serialized byte array

serialize

public abstract void serialize(java.io.DataOutputStream out)
Serialize object to output stream

Parameters:
out - Output stream

serialize

public abstract void serialize(java.io.DataOutputStream out,
                               AMFDataContextSerialize context)
Serialize object to output stream

Parameters:
out - Output stream
context - serialization context used by AMF3

serialize

public abstract void serialize(java.io.DataOutputStream out,
                               int objectEncoding)
Serialize object to output stream

Parameters:
out - Output stream
objectEncoding - object encoding level (see AMF_LEVEL*)

serialize

public abstract byte[] serialize(int objectEncoding)
Serial object to byte array

Parameters:
objectEncoding - object encoding level (see AMF_LEVEL*)
Returns:
serialized byte array

setType

public void setType(int type)
Sets the the data type for this object

Parameters:
type - type DATA_TYPE_*

skipByte

public static int skipByte(java.nio.ByteBuffer data)
Skip forward one byte in the byte buffer

Parameters:
data - binary data being deserialized
Returns:
next byte in buffer

testNextByte

public static boolean testNextByte(java.nio.ByteBuffer data,
                                   int test)
Peek at the next value in data to see if its the test value

Parameters:
data - binary data being deserialized
test - value being tested
Returns:
return true if the next byte in the buffer equals the test value

triggerAMF3Switch

public static boolean triggerAMF3Switch(AMFData data)
Return true if the object is serialized differently in AMF3

Parameters:
data - AMF object
Returns:
true if the object is serialized differently in AMF3