mirror of https://github.com/gwuhaolin/livego.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.1 KiB
105 lines
2.1 KiB
package amf |
|
|
|
import ( |
|
"io" |
|
) |
|
|
|
const ( |
|
AMF0 = 0x00 |
|
AMF3 = 0x03 |
|
) |
|
|
|
const ( |
|
AMF0_NUMBER_MARKER = 0x00 |
|
AMF0_BOOLEAN_MARKER = 0x01 |
|
AMF0_STRING_MARKER = 0x02 |
|
AMF0_OBJECT_MARKER = 0x03 |
|
AMF0_MOVIECLIP_MARKER = 0x04 |
|
AMF0_NULL_MARKER = 0x05 |
|
AMF0_UNDEFINED_MARKER = 0x06 |
|
AMF0_REFERENCE_MARKER = 0x07 |
|
AMF0_ECMA_ARRAY_MARKER = 0x08 |
|
AMF0_OBJECT_END_MARKER = 0x09 |
|
AMF0_STRICT_ARRAY_MARKER = 0x0a |
|
AMF0_DATE_MARKER = 0x0b |
|
AMF0_LONG_STRING_MARKER = 0x0c |
|
AMF0_UNSUPPORTED_MARKER = 0x0d |
|
AMF0_RECORDSET_MARKER = 0x0e |
|
AMF0_XML_DOCUMENT_MARKER = 0x0f |
|
AMF0_TYPED_OBJECT_MARKER = 0x10 |
|
AMF0_ACMPLUS_OBJECT_MARKER = 0x11 |
|
) |
|
|
|
const ( |
|
AMF0_BOOLEAN_FALSE = 0x00 |
|
AMF0_BOOLEAN_TRUE = 0x01 |
|
AMF0_STRING_MAX = 65535 |
|
AMF3_INTEGER_MAX = 536870911 |
|
) |
|
|
|
const ( |
|
AMF3_UNDEFINED_MARKER = 0x00 |
|
AMF3_NULL_MARKER = 0x01 |
|
AMF3_FALSE_MARKER = 0x02 |
|
AMF3_TRUE_MARKER = 0x03 |
|
AMF3_INTEGER_MARKER = 0x04 |
|
AMF3_DOUBLE_MARKER = 0x05 |
|
AMF3_STRING_MARKER = 0x06 |
|
AMF3_XMLDOC_MARKER = 0x07 |
|
AMF3_DATE_MARKER = 0x08 |
|
AMF3_ARRAY_MARKER = 0x09 |
|
AMF3_OBJECT_MARKER = 0x0a |
|
AMF3_XMLSTRING_MARKER = 0x0b |
|
AMF3_BYTEARRAY_MARKER = 0x0c |
|
) |
|
|
|
type ExternalHandler func(*Decoder, io.Reader) (interface{}, error) |
|
|
|
type Decoder struct { |
|
refCache []interface{} |
|
stringRefs []string |
|
objectRefs []interface{} |
|
traitRefs []Trait |
|
externalHandlers map[string]ExternalHandler |
|
} |
|
|
|
func NewDecoder() *Decoder { |
|
return &Decoder{ |
|
externalHandlers: make(map[string]ExternalHandler), |
|
} |
|
} |
|
|
|
func (d *Decoder) RegisterExternalHandler(name string, f ExternalHandler) { |
|
d.externalHandlers[name] = f |
|
} |
|
|
|
type Encoder struct { |
|
} |
|
|
|
type Version uint8 |
|
|
|
type Array []interface{} |
|
type Object map[string]interface{} |
|
|
|
type TypedObject struct { |
|
Type string |
|
Object Object |
|
} |
|
|
|
type Trait struct { |
|
Type string |
|
Externalizable bool |
|
Dynamic bool |
|
Properties []string |
|
} |
|
|
|
func NewTrait() *Trait { |
|
return &Trait{} |
|
} |
|
|
|
func NewTypedObject() *TypedObject { |
|
return &TypedObject{ |
|
Type: "", |
|
Object: make(Object), |
|
} |
|
}
|
|
|