From a3ae8713607e8228269016b28e08f3005c038f72 Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 8 Mar 2014 22:07:40 +0800 Subject: [PATCH] refine code, array to ecma_array. --- trunk/src/rtmp/srs_protocol_amf0.cpp | 10 +-- trunk/src/rtmp/srs_protocol_amf0.hpp | 14 ++-- trunk/src/rtmp/srs_protocol_rtmp.cpp | 2 +- trunk/src/rtmp/srs_protocol_rtmp_stack.cpp | 2 +- trunk/src/utest/srs_utest_amf0.cpp | 93 +++++++++++++++------- 5 files changed, 78 insertions(+), 43 deletions(-) diff --git a/trunk/src/rtmp/srs_protocol_amf0.cpp b/trunk/src/rtmp/srs_protocol_amf0.cpp index 55766b8ee..925f6e754 100644 --- a/trunk/src/rtmp/srs_protocol_amf0.cpp +++ b/trunk/src/rtmp/srs_protocol_amf0.cpp @@ -277,7 +277,7 @@ SrsAmf0Object* SrsAmf0Any::to_object() return p; } -SrsAmf0EcmaArray* SrsAmf0Any::to_array() +SrsAmf0EcmaArray* SrsAmf0Any::to_ecma_array() { SrsAmf0EcmaArray* p = dynamic_cast(this); srs_assert(p != NULL); @@ -324,7 +324,7 @@ SrsAmf0Any* SrsAmf0Any::object_eof() return new __SrsAmf0ObjectEOF(); } -SrsAmf0EcmaArray* SrsAmf0Any::array() +SrsAmf0EcmaArray* SrsAmf0Any::ecma_array() { return new SrsAmf0EcmaArray(); } @@ -378,7 +378,7 @@ int SrsAmf0Any::discovery(SrsStream* stream, SrsAmf0Any** ppvalue) return ret; } case RTMP_AMF0_EcmaArray: { - *ppvalue = SrsAmf0Any::array(); + *ppvalue = SrsAmf0Any::ecma_array(); return ret; } case RTMP_AMF0_Invalid: @@ -959,7 +959,7 @@ int SrsAmf0Size::object_eof() return 2 + 1; } -int SrsAmf0Size::array(SrsAmf0EcmaArray* arr) +int SrsAmf0Size::ecma_array(SrsAmf0EcmaArray* arr) { if (!arr) { return 0; @@ -1517,7 +1517,7 @@ int srs_amf0_read_ecma_array(SrsStream* stream, SrsAmf0EcmaArray*& value) { int ret = ERROR_SUCCESS; - value = SrsAmf0Any::array(); + value = SrsAmf0Any::ecma_array(); if ((ret = value->read(stream)) != ERROR_SUCCESS) { srs_freep(value); diff --git a/trunk/src/rtmp/srs_protocol_amf0.hpp b/trunk/src/rtmp/srs_protocol_amf0.hpp index 38294b6a2..4c0cdb57b 100644 --- a/trunk/src/rtmp/srs_protocol_amf0.hpp +++ b/trunk/src/rtmp/srs_protocol_amf0.hpp @@ -58,10 +58,10 @@ class __SrsAmf0ObjectEOF; // SrsAmf0Any* pany = SrsAmf0Any::str("winlin"); // 4. SrsAmf0Size: get amf0 instance size // int size = SrsAmf0Size::str("winlin"); -// 5. SrsAmf0Object: the amf0 object. +// 5. SrsAmf0Object: create the amf0 object. // SrsAmf0Object* obj = SrsAmf0Any::object(); -// 5. SrsAmf0EcmaArray: the amf0 ecma array. -// SrsAmf0EcmaArray* arr = SrsAmf0Any::array(); +// 5. SrsAmf0EcmaArray: create the amf0 ecma array. +// SrsAmf0EcmaArray* arr = SrsAmf0Any::ecma_array(); // for detail usage, see interfaces of each object. //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// @@ -116,7 +116,7 @@ public: * get the ecma array of any when is_ecma_array() indicates true. * user must ensure the type is a ecma array, or assert failed. */ - virtual SrsAmf0EcmaArray* to_array(); + virtual SrsAmf0EcmaArray* to_ecma_array(); public: /** * get the size of amf0 any, including the marker size. @@ -135,7 +135,7 @@ public: static SrsAmf0Any* undefined(); static SrsAmf0Object* object(); static SrsAmf0Any* object_eof(); - static SrsAmf0EcmaArray* array(); + static SrsAmf0EcmaArray* ecma_array(); public: static int discovery(SrsStream* stream, SrsAmf0Any** ppvalue); }; @@ -185,7 +185,7 @@ private: int32_t count; private: - // use SrsAmf0Any::array() to create it. + // use SrsAmf0Any::ecma_array() to create it. friend class SrsAmf0Any; SrsAmf0EcmaArray(); public: @@ -218,7 +218,7 @@ public: static int boolean(); static int object(SrsAmf0Object* obj); static int object_eof(); - static int array(SrsAmf0EcmaArray* arr); + static int ecma_array(SrsAmf0EcmaArray* arr); static int any(SrsAmf0Any* o); }; diff --git a/trunk/src/rtmp/srs_protocol_rtmp.cpp b/trunk/src/rtmp/srs_protocol_rtmp.cpp index c238bd0b2..7a4d7e0dc 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp.cpp +++ b/trunk/src/rtmp/srs_protocol_rtmp.cpp @@ -706,7 +706,7 @@ int SrsRtmpServer::response_connect_app(SrsRequest *req, const char* server_ip) pkt->info->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectSuccess)); pkt->info->set(StatusDescription, SrsAmf0Any::str("Connection succeeded")); pkt->info->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding)); - SrsAmf0EcmaArray* data = SrsAmf0Any::array(); + SrsAmf0EcmaArray* data = SrsAmf0Any::ecma_array(); pkt->info->set("data", data); data->set("version", SrsAmf0Any::str(RTMP_SIG_FMS_VER)); diff --git a/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp b/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp index 49398ead8..9db3f5137 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp +++ b/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp @@ -3201,7 +3201,7 @@ int SrsOnMetaDataPacket::decode(SrsStream* stream) SrsAutoFree(SrsAmf0Any, any, false); if (any->is_ecma_array()) { - SrsAmf0EcmaArray* arr = any->to_array(); + SrsAmf0EcmaArray* arr = any->to_ecma_array(); // if ecma array, copy to object. for (int i = 0; i < arr->size(); i++) { diff --git a/trunk/src/utest/srs_utest_amf0.cpp b/trunk/src/utest/srs_utest_amf0.cpp index 02354f75b..b80da4019 100644 --- a/trunk/src/utest/srs_utest_amf0.cpp +++ b/trunk/src/utest/srs_utest_amf0.cpp @@ -106,61 +106,61 @@ VOID TEST(AMF0Test, Size) // array: empty if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } // array: elem if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); o->set("name", SrsAmf0Any::str("winlin")); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); o->set("age", SrsAmf0Any::number(9)); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); o->set("email", SrsAmf0Any::null()); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); o->set("email", SrsAmf0Any::undefined()); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean(); o->set("sex", SrsAmf0Any::boolean(true)); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } // object: array @@ -172,9 +172,9 @@ VOID TEST(AMF0Test, Size) size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); o->set("name", SrsAmf0Any::str("winlin")); - SrsAmf0EcmaArray* args = SrsAmf0Any::array(); + SrsAmf0EcmaArray* args = SrsAmf0Any::ecma_array(); args->set("p0", SrsAmf0Any::str("function")); - size += SrsAmf0Size::utf8("args")+SrsAmf0Size::array(args); + size += SrsAmf0Size::utf8("args")+SrsAmf0Size::ecma_array(args); o->set("args", args); EXPECT_EQ(size, SrsAmf0Size::object(o)); @@ -187,14 +187,14 @@ VOID TEST(AMF0Test, Size) size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); o->set("name", SrsAmf0Any::str("winlin")); - SrsAmf0EcmaArray* args = SrsAmf0Any::array(); + SrsAmf0EcmaArray* args = SrsAmf0Any::ecma_array(); args->set("p0", SrsAmf0Any::str("function")); - size += SrsAmf0Size::utf8("args")+SrsAmf0Size::array(args); + size += SrsAmf0Size::utf8("args")+SrsAmf0Size::ecma_array(args); o->set("args", args); - SrsAmf0EcmaArray* params = SrsAmf0Any::array(); + SrsAmf0EcmaArray* params = SrsAmf0Any::ecma_array(); params->set("p1", SrsAmf0Any::number(10)); - size += SrsAmf0Size::utf8("params")+SrsAmf0Size::array(params); + size += SrsAmf0Size::utf8("params")+SrsAmf0Size::ecma_array(params); o->set("params", params); EXPECT_EQ(size, SrsAmf0Size::object(o)); @@ -203,7 +203,7 @@ VOID TEST(AMF0Test, Size) // array: object if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); @@ -214,11 +214,11 @@ VOID TEST(AMF0Test, Size) size += SrsAmf0Size::utf8("args")+SrsAmf0Size::object(args); o->set("args", args); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); @@ -234,7 +234,7 @@ VOID TEST(AMF0Test, Size) size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params); o->set("params", params); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } // object: object @@ -262,23 +262,23 @@ VOID TEST(AMF0Test, Size) // array: array if (true) { int size = 1+4+3; - SrsAmf0EcmaArray* o = SrsAmf0Any::array(); + SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); SrsAutoFree(SrsAmf0EcmaArray, o, false); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); o->set("name", SrsAmf0Any::str("winlin")); - SrsAmf0EcmaArray* args = SrsAmf0Any::array(); + SrsAmf0EcmaArray* args = SrsAmf0Any::ecma_array(); args->set("p0", SrsAmf0Any::str("function")); - size += SrsAmf0Size::utf8("args")+SrsAmf0Size::array(args); + size += SrsAmf0Size::utf8("args")+SrsAmf0Size::ecma_array(args); o->set("args", args); - SrsAmf0EcmaArray* params = SrsAmf0Any::array(); + SrsAmf0EcmaArray* params = SrsAmf0Any::ecma_array(); params->set("p1", SrsAmf0Any::number(10)); - size += SrsAmf0Size::utf8("params")+SrsAmf0Size::array(params); + size += SrsAmf0Size::utf8("params")+SrsAmf0Size::ecma_array(params); o->set("params", params); - EXPECT_EQ(size, SrsAmf0Size::array(o)); + EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); } } @@ -693,5 +693,40 @@ VOID TEST(AMF0Test, AnyAssert) srs_freep(o); } - // + // any convert + if (true) { + o = SrsAmf0Any::str(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_string()); + } + if (true) { + o = SrsAmf0Any::number(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_number()); + } + if (true) { + o = SrsAmf0Any::boolean(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_boolean()); + } + if (true) { + o = SrsAmf0Any::null(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_null()); + } + if (true) { + o = SrsAmf0Any::undefined(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_undefined()); + } + if (true) { + o = SrsAmf0Any::object(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_object()); + } + if (true) { + o = SrsAmf0Any::ecma_array(); + SrsAutoFree(SrsAmf0Any, o, false); + EXPECT_TRUE(o->is_ecma_array()); + } }