refine code, array to ecma_array.

pull/133/head
winlin 11 years ago
parent 3129c738cb
commit a3ae871360

@ -277,7 +277,7 @@ SrsAmf0Object* SrsAmf0Any::to_object()
return p; return p;
} }
SrsAmf0EcmaArray* SrsAmf0Any::to_array() SrsAmf0EcmaArray* SrsAmf0Any::to_ecma_array()
{ {
SrsAmf0EcmaArray* p = dynamic_cast<SrsAmf0EcmaArray*>(this); SrsAmf0EcmaArray* p = dynamic_cast<SrsAmf0EcmaArray*>(this);
srs_assert(p != NULL); srs_assert(p != NULL);
@ -324,7 +324,7 @@ SrsAmf0Any* SrsAmf0Any::object_eof()
return new __SrsAmf0ObjectEOF(); return new __SrsAmf0ObjectEOF();
} }
SrsAmf0EcmaArray* SrsAmf0Any::array() SrsAmf0EcmaArray* SrsAmf0Any::ecma_array()
{ {
return new SrsAmf0EcmaArray(); return new SrsAmf0EcmaArray();
} }
@ -378,7 +378,7 @@ int SrsAmf0Any::discovery(SrsStream* stream, SrsAmf0Any** ppvalue)
return ret; return ret;
} }
case RTMP_AMF0_EcmaArray: { case RTMP_AMF0_EcmaArray: {
*ppvalue = SrsAmf0Any::array(); *ppvalue = SrsAmf0Any::ecma_array();
return ret; return ret;
} }
case RTMP_AMF0_Invalid: case RTMP_AMF0_Invalid:
@ -959,7 +959,7 @@ int SrsAmf0Size::object_eof()
return 2 + 1; return 2 + 1;
} }
int SrsAmf0Size::array(SrsAmf0EcmaArray* arr) int SrsAmf0Size::ecma_array(SrsAmf0EcmaArray* arr)
{ {
if (!arr) { if (!arr) {
return 0; return 0;
@ -1517,7 +1517,7 @@ int srs_amf0_read_ecma_array(SrsStream* stream, SrsAmf0EcmaArray*& value)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
value = SrsAmf0Any::array(); value = SrsAmf0Any::ecma_array();
if ((ret = value->read(stream)) != ERROR_SUCCESS) { if ((ret = value->read(stream)) != ERROR_SUCCESS) {
srs_freep(value); srs_freep(value);

@ -58,10 +58,10 @@ class __SrsAmf0ObjectEOF;
// SrsAmf0Any* pany = SrsAmf0Any::str("winlin"); // SrsAmf0Any* pany = SrsAmf0Any::str("winlin");
// 4. SrsAmf0Size: get amf0 instance size // 4. SrsAmf0Size: get amf0 instance size
// int size = SrsAmf0Size::str("winlin"); // int size = SrsAmf0Size::str("winlin");
// 5. SrsAmf0Object: the amf0 object. // 5. SrsAmf0Object: create the amf0 object.
// SrsAmf0Object* obj = SrsAmf0Any::object(); // SrsAmf0Object* obj = SrsAmf0Any::object();
// 5. SrsAmf0EcmaArray: the amf0 ecma array. // 5. SrsAmf0EcmaArray: create the amf0 ecma array.
// SrsAmf0EcmaArray* arr = SrsAmf0Any::array(); // SrsAmf0EcmaArray* arr = SrsAmf0Any::ecma_array();
// for detail usage, see interfaces of each object. // 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. * get the ecma array of any when is_ecma_array() indicates true.
* user must ensure the type is a ecma array, or assert failed. * user must ensure the type is a ecma array, or assert failed.
*/ */
virtual SrsAmf0EcmaArray* to_array(); virtual SrsAmf0EcmaArray* to_ecma_array();
public: public:
/** /**
* get the size of amf0 any, including the marker size. * get the size of amf0 any, including the marker size.
@ -135,7 +135,7 @@ public:
static SrsAmf0Any* undefined(); static SrsAmf0Any* undefined();
static SrsAmf0Object* object(); static SrsAmf0Object* object();
static SrsAmf0Any* object_eof(); static SrsAmf0Any* object_eof();
static SrsAmf0EcmaArray* array(); static SrsAmf0EcmaArray* ecma_array();
public: public:
static int discovery(SrsStream* stream, SrsAmf0Any** ppvalue); static int discovery(SrsStream* stream, SrsAmf0Any** ppvalue);
}; };
@ -185,7 +185,7 @@ private:
int32_t count; int32_t count;
private: private:
// use SrsAmf0Any::array() to create it. // use SrsAmf0Any::ecma_array() to create it.
friend class SrsAmf0Any; friend class SrsAmf0Any;
SrsAmf0EcmaArray(); SrsAmf0EcmaArray();
public: public:
@ -218,7 +218,7 @@ public:
static int boolean(); static int boolean();
static int object(SrsAmf0Object* obj); static int object(SrsAmf0Object* obj);
static int object_eof(); static int object_eof();
static int array(SrsAmf0EcmaArray* arr); static int ecma_array(SrsAmf0EcmaArray* arr);
static int any(SrsAmf0Any* o); static int any(SrsAmf0Any* o);
}; };

@ -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(StatusCode, SrsAmf0Any::str(StatusCodeConnectSuccess));
pkt->info->set(StatusDescription, SrsAmf0Any::str("Connection succeeded")); pkt->info->set(StatusDescription, SrsAmf0Any::str("Connection succeeded"));
pkt->info->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding)); pkt->info->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding));
SrsAmf0EcmaArray* data = SrsAmf0Any::array(); SrsAmf0EcmaArray* data = SrsAmf0Any::ecma_array();
pkt->info->set("data", data); pkt->info->set("data", data);
data->set("version", SrsAmf0Any::str(RTMP_SIG_FMS_VER)); data->set("version", SrsAmf0Any::str(RTMP_SIG_FMS_VER));

@ -3201,7 +3201,7 @@ int SrsOnMetaDataPacket::decode(SrsStream* stream)
SrsAutoFree(SrsAmf0Any, any, false); SrsAutoFree(SrsAmf0Any, any, false);
if (any->is_ecma_array()) { if (any->is_ecma_array()) {
SrsAmf0EcmaArray* arr = any->to_array(); SrsAmf0EcmaArray* arr = any->to_ecma_array();
// if ecma array, copy to object. // if ecma array, copy to object.
for (int i = 0; i < arr->size(); i++) { for (int i = 0; i < arr->size(); i++) {

@ -106,61 +106,61 @@ VOID TEST(AMF0Test, Size)
// array: empty // array: empty
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
// array: elem // array: elem
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin")); o->set("name", SrsAmf0Any::str("winlin"));
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
o->set("age", SrsAmf0Any::number(9)); o->set("age", SrsAmf0Any::number(9));
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
o->set("email", SrsAmf0Any::null()); o->set("email", SrsAmf0Any::null());
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
o->set("email", SrsAmf0Any::undefined()); o->set("email", SrsAmf0Any::undefined());
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean(); size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
o->set("sex", SrsAmf0Any::boolean(true)); o->set("sex", SrsAmf0Any::boolean(true));
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
// object: array // object: array
@ -172,9 +172,9 @@ VOID TEST(AMF0Test, Size)
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin")); o->set("name", SrsAmf0Any::str("winlin"));
SrsAmf0EcmaArray* args = SrsAmf0Any::array(); SrsAmf0EcmaArray* args = SrsAmf0Any::ecma_array();
args->set("p0", SrsAmf0Any::str("function")); 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); o->set("args", args);
EXPECT_EQ(size, SrsAmf0Size::object(o)); EXPECT_EQ(size, SrsAmf0Size::object(o));
@ -187,14 +187,14 @@ VOID TEST(AMF0Test, Size)
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin")); o->set("name", SrsAmf0Any::str("winlin"));
SrsAmf0EcmaArray* args = SrsAmf0Any::array(); SrsAmf0EcmaArray* args = SrsAmf0Any::ecma_array();
args->set("p0", SrsAmf0Any::str("function")); 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); o->set("args", args);
SrsAmf0EcmaArray* params = SrsAmf0Any::array(); SrsAmf0EcmaArray* params = SrsAmf0Any::ecma_array();
params->set("p1", SrsAmf0Any::number(10)); 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); o->set("params", params);
EXPECT_EQ(size, SrsAmf0Size::object(o)); EXPECT_EQ(size, SrsAmf0Size::object(o));
@ -203,7 +203,7 @@ VOID TEST(AMF0Test, Size)
// array: object // array: object
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
@ -214,11 +214,11 @@ VOID TEST(AMF0Test, Size)
size += SrsAmf0Size::utf8("args")+SrsAmf0Size::object(args); size += SrsAmf0Size::utf8("args")+SrsAmf0Size::object(args);
o->set("args", args); o->set("args", args);
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
@ -234,7 +234,7 @@ VOID TEST(AMF0Test, Size)
size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params); size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params);
o->set("params", params); o->set("params", params);
EXPECT_EQ(size, SrsAmf0Size::array(o)); EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
} }
// object: object // object: object
@ -262,23 +262,23 @@ VOID TEST(AMF0Test, Size)
// array: array // array: array
if (true) { if (true) {
int size = 1+4+3; int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::array(); SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false); SrsAutoFree(SrsAmf0EcmaArray, o, false);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin")); o->set("name", SrsAmf0Any::str("winlin"));
SrsAmf0EcmaArray* args = SrsAmf0Any::array(); SrsAmf0EcmaArray* args = SrsAmf0Any::ecma_array();
args->set("p0", SrsAmf0Any::str("function")); 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); o->set("args", args);
SrsAmf0EcmaArray* params = SrsAmf0Any::array(); SrsAmf0EcmaArray* params = SrsAmf0Any::ecma_array();
params->set("p1", SrsAmf0Any::number(10)); 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); 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); 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());
}
} }

Loading…
Cancel
Save