Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 22c70e2f8b2b3d927d91f74374416a0a > files > 28

erlang-amf-0-0.6.20110224gitb36dfb6.fc16.i686.rpm

@author Ruslan Babayev <ruslan@babayev.com>
@copyright 2009 Ruslan Babayev
@version 1.0.1
@title Action Message Format Library.
@doc This library provides AMF support for Erlang.

== Introduction ==
Action Message Format (AMF) is a compact binary format that is used to
serialize ActionScript object graphs. Once serialized an AMF encoded object
graph may be used to persist and retrieve the public state of an application
across sessions or allow two endpoints to communicate through the exchange
of strongly typed data.

AMF was introduced in Flash Player 6 in 2001 and remained unchanged with the
introduction of ActionScript 2.0 in Flash Player 7 and with the release of
Flash Player 8. This version of AMF is referred to as AMF0.
In Flash Player 9, ActionScript 3.0 was introduced along with a new
ActionScript Virtual Machine (AVM+). The new data types and language
features made possible by these improvements prompted AMF to be updated.
Given the opportunity to relase a new version of AMF, several optimizations
were also made to the encoding format to remove redundant information from
serialized data. The new AMF format is referred to as AMF3.

This library supports both AMF0 and AMF3.

== Mapping between AMF0 and Erlang ==
<table border="1" width="100%">
  <th>AMF0</th>
  <th>Erlang</th>
  <tr>
    <td>Number</td>
    <td>float() | '+infinity' | '-infinity' | 'qNaN' | 'sNaN'</td>
  </tr>
  <tr>
    <td>Bool</td>
    <td>true | false</td>
  </tr>
  <tr>
    <td>String</td>
    <td>binary()</td>
  </tr>
  <tr>
    <td>Object</td>
    <td>{object, Members::[{atom(), amf0()}]}</td>
  </tr>
  <tr>
    <td>Null</td>
    <td>null</td>
  </tr>
  <tr>
    <td>Undefined</td>
    <td>undefined</td>
  </tr>
  <tr>
    <td>ECMA Array</td>
    <td>[{binary(), amf0()}]</td>
  </tr>
  <tr>
    <td>Strict Array</td>
    <td>[amf0()]</td>
  </tr>
  <tr>
    <td>Date</td>
    <td>{date, MilliSecs::float(), TimeZone::integer()}</td>
  </tr>
  <tr>
    <td>Long String</td>
    <td>binary()</td>
  </tr>
  <tr>
    <td>Unsupported</td>
    <td>unsupported</td>
  </tr>
  <tr>
    <td>XML Document</td>
    <td>{xmldoc, Contents::binary()}</td>
  </tr>
  <tr>
    <td>Typed Object</td>
    <td>{object, ClassName::binary(), Members::[{atom(), amf0()}]}</td>
  </tr>
  <tr>
    <td>AVM+ Object</td>
    <td>{avmplus, amf3()}</td>
  </tr>
</table>

== Mapping between AMF3 and Erlang ==
<table border="1" width="100%">
  <th>AMF3</th>
  <th>Erlang</th>
  <tr>
    <td>Undefined</td>
    <td>undefined</td>
  </tr>
  <tr>
    <td>Null</td>
    <td>null</td>
  </tr>
  <tr>
    <td>False</td>
    <td>false</td>
  </tr>
  <tr>
    <td>True</td>
    <td>true</td>
  </tr>
  <tr>
    <td>Integer</td>
    <td>integer()</td>
  </tr>
  <tr>
    <td>Double</td>
    <td>float() | '+infinity' | '-infinity' | 'qNaN' | 'sNaN'</td>
  </tr>
  <tr>
    <td>String</td>
    <td>binary()</td>
  </tr>
  <tr>
    <td>XML Document</td>
    <td>{xmldoc, binary()}</td>
  </tr>
  <tr>
    <td>Date</td>
    <td>{date, MilliSecs::float(), TimeZone::integer()}</td>
  </tr>
  <tr>
    <td>Array</td>
    <td>[{binary(), amf3()} | amf3()]</td>
  </tr>
  <tr>
    <td>Object</td>
    <td>{object, binary(), [{atom(), amf3()} | {binary(), amf3()}]}</td>
  </tr>
  <tr>
    <td>XML</td>
    <td>{xml, binary()}</td>
  </tr>
  <tr>
    <td>Byte Array</td>
    <td>{bytearray, binary()}</td>
  </tr>
</table>