1
0
Fork 0
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:
winlin 2014-03-08 22:25:56 +08:00
parent a3ae871360
commit 8ed9ae6242
4 changed files with 34 additions and 92 deletions

View file

@ -1494,39 +1494,3 @@ int srs_amf0_write_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF* value)
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);
}

View file

@ -270,23 +270,4 @@ extern int srs_amf0_write_null(SrsStream* stream);
extern int srs_amf0_read_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

View file

@ -1730,7 +1730,7 @@ SrsConnectAppPacket::SrsConnectAppPacket()
{
command_name = RTMP_AMF0_COMMAND_CONNECT;
transaction_id = 1;
command_object = NULL;
command_object = SrsAmf0Any::object();
}
SrsConnectAppPacket::~SrsConnectAppPacket()
@ -1764,12 +1764,7 @@ int SrsConnectAppPacket::decode(SrsStream* stream)
return ret;
}
if ((ret = srs_amf0_read_object(stream, command_object)) != ERROR_SUCCESS) {
srs_error("amf0 decode connect command_object failed. ret=%d", ret);
return ret;
}
if (command_object == NULL) {
ret = ERROR_RTMP_AMF0_DECODE;
if ((ret = command_object->read(stream)) != ERROR_SUCCESS) {
srs_error("amf0 decode connect command_object failed. ret=%d", ret);
return ret;
}
@ -1811,7 +1806,7 @@ int SrsConnectAppPacket::encode_packet(SrsStream* stream)
}
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);
return ret;
}
@ -1826,8 +1821,6 @@ SrsConnectAppResPacket::SrsConnectAppResPacket()
{
command_name = RTMP_AMF0_COMMAND_RESULT;
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();
info = SrsAmf0Any::object();
}
@ -1864,22 +1857,12 @@ int SrsConnectAppResPacket::decode(SrsStream* stream)
return ret;
}
if ((ret = srs_amf0_read_object(stream, props)) != ERROR_SUCCESS) {
srs_error("amf0 decode connect props failed. ret=%d", ret);
return ret;
}
if (props == NULL) {
ret = ERROR_RTMP_AMF0_DECODE;
if ((ret = props->read(stream)) != ERROR_SUCCESS) {
srs_error("amf0 decode connect props failed. ret=%d", ret);
return ret;
}
if ((ret = srs_amf0_read_object(stream, info)) != ERROR_SUCCESS) {
srs_error("amf0 decode connect info failed. ret=%d", ret);
return ret;
}
if (info == NULL) {
ret = ERROR_RTMP_AMF0_DECODE;
if ((ret = info->read(stream)) != ERROR_SUCCESS) {
srs_error("amf0 decode connect info failed. ret=%d", ret);
return ret;
}
@ -1930,21 +1913,17 @@ int SrsConnectAppResPacket::encode_packet(SrsStream* stream)
}
srs_verbose("encode transaction_id success.");
if (props->size() > 0) {
if ((ret = srs_amf0_write_object(stream, props)) != ERROR_SUCCESS) {
if ((ret = props->write(stream)) != ERROR_SUCCESS) {
srs_error("encode props failed. ret=%d", ret);
return ret;
}
}
srs_verbose("encode props success.");
if (info->size() > 0) {
if ((ret = srs_amf0_write_object(stream, info)) != ERROR_SUCCESS) {
if ((ret = info->write(stream)) != ERROR_SUCCESS) {
srs_error("encode info failed. ret=%d", ret);
return ret;
}
}
srs_verbose("encode info success.");
@ -2765,7 +2744,7 @@ int SrsPlayResPacket::encode_packet(SrsStream* stream)
}
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);
return ret;
}
@ -2884,7 +2863,7 @@ int SrsOnStatusCallPacket::encode_packet(SrsStream* stream)
}
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);
return ret;
}
@ -2947,7 +2926,7 @@ int SrsBandwidthPacket::encode_packet(SrsStream* stream)
}
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);
return ret;
}
@ -3088,7 +3067,7 @@ int SrsOnStatusDataPacket::encode_packet(SrsStream* stream)
}
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);
return ret;
}
@ -3240,7 +3219,7 @@ int SrsOnMetaDataPacket::encode_packet(SrsStream* stream)
}
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);
return ret;
}

View file

@ -729,4 +729,22 @@ VOID TEST(AMF0Test, AnyAssert)
SrsAutoFree(SrsAmf0Any, o, false);
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());
}
}