mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
amf0 utest: remove the object read/write function, directly use object to read or write.
This commit is contained in:
parent
a3ae871360
commit
8ed9ae6242
4 changed files with 34 additions and 92 deletions
|
@ -1494,39 +1494,3 @@ int srs_amf0_write_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF* value)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int srs_amf0_read_object(SrsStream* stream, SrsAmf0Object*& value)
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
value = SrsAmf0Any::object();
|
|
||||||
|
|
||||||
if ((ret = value->read(stream)) != ERROR_SUCCESS) {
|
|
||||||
srs_freep(value);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
int srs_amf0_write_object(SrsStream* stream, SrsAmf0Object* value)
|
|
||||||
{
|
|
||||||
return value->write(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
int srs_amf0_read_ecma_array(SrsStream* stream, SrsAmf0EcmaArray*& value)
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
value = SrsAmf0Any::ecma_array();
|
|
||||||
|
|
||||||
if ((ret = value->read(stream)) != ERROR_SUCCESS) {
|
|
||||||
srs_freep(value);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
int srs_amf0_write_ecma_array(SrsStream* stream, SrsAmf0EcmaArray* value)
|
|
||||||
{
|
|
||||||
return value->write(stream);
|
|
||||||
}
|
|
||||||
|
|
|
@ -270,23 +270,4 @@ extern int srs_amf0_write_null(SrsStream* stream);
|
||||||
extern int srs_amf0_read_undefined(SrsStream* stream);
|
extern int srs_amf0_read_undefined(SrsStream* stream);
|
||||||
extern int srs_amf0_write_undefined(SrsStream* stream);
|
extern int srs_amf0_write_undefined(SrsStream* stream);
|
||||||
|
|
||||||
/**
|
|
||||||
* read amf0 object from stream.
|
|
||||||
* 2.5 Object Type
|
|
||||||
* anonymous-object-type = object-marker *(object-property)
|
|
||||||
* object-property = (UTF-8 value-type) | (UTF-8-empty object-end-marker)
|
|
||||||
*/
|
|
||||||
extern int srs_amf0_read_object(SrsStream* stream, SrsAmf0Object*& value);
|
|
||||||
extern int srs_amf0_write_object(SrsStream* stream, SrsAmf0Object* value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* read amf0 object from stream.
|
|
||||||
* 2.10 ECMA Array Type
|
|
||||||
* ecma-array-type = associative-count *(object-property)
|
|
||||||
* associative-count = U32
|
|
||||||
* object-property = (UTF-8 value-type) | (UTF-8-empty object-end-marker)
|
|
||||||
*/
|
|
||||||
extern int srs_amf0_read_ecma_array(SrsStream* stream, SrsAmf0EcmaArray*& value);
|
|
||||||
extern int srs_amf0_write_ecma_array(SrsStream* stream, SrsAmf0EcmaArray* value);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1730,7 +1730,7 @@ SrsConnectAppPacket::SrsConnectAppPacket()
|
||||||
{
|
{
|
||||||
command_name = RTMP_AMF0_COMMAND_CONNECT;
|
command_name = RTMP_AMF0_COMMAND_CONNECT;
|
||||||
transaction_id = 1;
|
transaction_id = 1;
|
||||||
command_object = NULL;
|
command_object = SrsAmf0Any::object();
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsConnectAppPacket::~SrsConnectAppPacket()
|
SrsConnectAppPacket::~SrsConnectAppPacket()
|
||||||
|
@ -1764,12 +1764,7 @@ int SrsConnectAppPacket::decode(SrsStream* stream)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = srs_amf0_read_object(stream, command_object)) != ERROR_SUCCESS) {
|
if ((ret = command_object->read(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("amf0 decode connect command_object failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
if (command_object == NULL) {
|
|
||||||
ret = ERROR_RTMP_AMF0_DECODE;
|
|
||||||
srs_error("amf0 decode connect command_object failed. ret=%d", ret);
|
srs_error("amf0 decode connect command_object failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1811,7 +1806,7 @@ int SrsConnectAppPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode transaction_id success.");
|
srs_verbose("encode transaction_id success.");
|
||||||
|
|
||||||
if ((ret = srs_amf0_write_object(stream, command_object)) != ERROR_SUCCESS) {
|
if ((ret = command_object->write(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("encode command_object failed. ret=%d", ret);
|
srs_error("encode command_object failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1826,8 +1821,6 @@ SrsConnectAppResPacket::SrsConnectAppResPacket()
|
||||||
{
|
{
|
||||||
command_name = RTMP_AMF0_COMMAND_RESULT;
|
command_name = RTMP_AMF0_COMMAND_RESULT;
|
||||||
transaction_id = 1;
|
transaction_id = 1;
|
||||||
// TODO: FIXME: memory leak for decode will set the props and info.
|
|
||||||
// TODO: FIXME: bug#22, refine the amf0.
|
|
||||||
props = SrsAmf0Any::object();
|
props = SrsAmf0Any::object();
|
||||||
info = SrsAmf0Any::object();
|
info = SrsAmf0Any::object();
|
||||||
}
|
}
|
||||||
|
@ -1864,22 +1857,12 @@ int SrsConnectAppResPacket::decode(SrsStream* stream)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = srs_amf0_read_object(stream, props)) != ERROR_SUCCESS) {
|
if ((ret = props->read(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("amf0 decode connect props failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
if (props == NULL) {
|
|
||||||
ret = ERROR_RTMP_AMF0_DECODE;
|
|
||||||
srs_error("amf0 decode connect props failed. ret=%d", ret);
|
srs_error("amf0 decode connect props failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = srs_amf0_read_object(stream, info)) != ERROR_SUCCESS) {
|
if ((ret = info->read(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("amf0 decode connect info failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
if (info == NULL) {
|
|
||||||
ret = ERROR_RTMP_AMF0_DECODE;
|
|
||||||
srs_error("amf0 decode connect info failed. ret=%d", ret);
|
srs_error("amf0 decode connect info failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1930,20 +1913,16 @@ int SrsConnectAppResPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode transaction_id success.");
|
srs_verbose("encode transaction_id success.");
|
||||||
|
|
||||||
if (props->size() > 0) {
|
if ((ret = props->write(stream)) != ERROR_SUCCESS) {
|
||||||
if ((ret = srs_amf0_write_object(stream, props)) != ERROR_SUCCESS) {
|
srs_error("encode props failed. ret=%d", ret);
|
||||||
srs_error("encode props failed. ret=%d", ret);
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_verbose("encode props success.");
|
srs_verbose("encode props success.");
|
||||||
|
|
||||||
if (info->size() > 0) {
|
if ((ret = info->write(stream)) != ERROR_SUCCESS) {
|
||||||
if ((ret = srs_amf0_write_object(stream, info)) != ERROR_SUCCESS) {
|
srs_error("encode info failed. ret=%d", ret);
|
||||||
srs_error("encode info failed. ret=%d", ret);
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_verbose("encode info success.");
|
srs_verbose("encode info success.");
|
||||||
|
@ -2765,7 +2744,7 @@ int SrsPlayResPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode command_object success.");
|
srs_verbose("encode command_object success.");
|
||||||
|
|
||||||
if ((ret = srs_amf0_write_object(stream, desc)) != ERROR_SUCCESS) {
|
if ((ret = desc->write(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("encode desc failed. ret=%d", ret);
|
srs_error("encode desc failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2884,7 +2863,7 @@ int SrsOnStatusCallPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode args success.");;
|
srs_verbose("encode args success.");;
|
||||||
|
|
||||||
if ((ret = srs_amf0_write_object(stream, data)) != ERROR_SUCCESS) {
|
if ((ret = data->write(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("encode data failed. ret=%d", ret);
|
srs_error("encode data failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2947,7 +2926,7 @@ int SrsBandwidthPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode args success.");;
|
srs_verbose("encode args success.");;
|
||||||
|
|
||||||
if ((ret = srs_amf0_write_object(stream, data)) != ERROR_SUCCESS) {
|
if ((ret = data->write(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("encode data failed. ret=%d", ret);
|
srs_error("encode data failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -3088,7 +3067,7 @@ int SrsOnStatusDataPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode command_name success.");
|
srs_verbose("encode command_name success.");
|
||||||
|
|
||||||
if ((ret = srs_amf0_write_object(stream, data)) != ERROR_SUCCESS) {
|
if ((ret = data->write(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("encode data failed. ret=%d", ret);
|
srs_error("encode data failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -3240,7 +3219,7 @@ int SrsOnMetaDataPacket::encode_packet(SrsStream* stream)
|
||||||
}
|
}
|
||||||
srs_verbose("encode name success.");
|
srs_verbose("encode name success.");
|
||||||
|
|
||||||
if ((ret = srs_amf0_write_object(stream, metadata)) != ERROR_SUCCESS) {
|
if ((ret = metadata->write(stream)) != ERROR_SUCCESS) {
|
||||||
srs_error("encode metadata failed. ret=%d", ret);
|
srs_error("encode metadata failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -729,4 +729,22 @@ VOID TEST(AMF0Test, AnyAssert)
|
||||||
SrsAutoFree(SrsAmf0Any, o, false);
|
SrsAutoFree(SrsAmf0Any, o, false);
|
||||||
EXPECT_TRUE(o->is_ecma_array());
|
EXPECT_TRUE(o->is_ecma_array());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// empty object
|
||||||
|
if (true) {
|
||||||
|
o = SrsAmf0Any::object();
|
||||||
|
SrsAutoFree(SrsAmf0Any, o, false);
|
||||||
|
s.reset();
|
||||||
|
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||||
|
EXPECT_EQ(1+3, s.pos());
|
||||||
|
}
|
||||||
|
|
||||||
|
// empty ecma array
|
||||||
|
if (true) {
|
||||||
|
o = SrsAmf0Any::ecma_array();
|
||||||
|
SrsAutoFree(SrsAmf0Any, o, false);
|
||||||
|
s.reset();
|
||||||
|
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||||
|
EXPECT_EQ(1+4+3, s.pos());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue