1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

refine amf0 object size to total_size, elem count to count

This commit is contained in:
winlin 2014-03-08 22:59:30 +08:00
parent 59db1dd260
commit 9fd48d84c1
5 changed files with 52 additions and 61 deletions

View file

@ -1212,7 +1212,7 @@ int SrsHls::on_meta_data(SrsAmf0Object* metadata)
} }
SrsAmf0Object* obj = metadata; SrsAmf0Object* obj = metadata;
if (obj->size() <= 0) { if (obj->count() <= 0) {
srs_trace("no metadata persent, hls ignored it."); srs_trace("no metadata persent, hls ignored it.");
return ret; return ret;
} }

View file

@ -71,7 +71,7 @@ public:
__SrsAmf0String(const char* _value); __SrsAmf0String(const char* _value);
virtual ~__SrsAmf0String(); virtual ~__SrsAmf0String();
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
}; };
@ -91,7 +91,7 @@ public:
__SrsAmf0Boolean(bool _value); __SrsAmf0Boolean(bool _value);
virtual ~__SrsAmf0Boolean(); virtual ~__SrsAmf0Boolean();
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
}; };
@ -110,7 +110,7 @@ public:
__SrsAmf0Number(double _value); __SrsAmf0Number(double _value);
virtual ~__SrsAmf0Number(); virtual ~__SrsAmf0Number();
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
}; };
@ -126,7 +126,7 @@ public:
__SrsAmf0Null(); __SrsAmf0Null();
virtual ~__SrsAmf0Null(); virtual ~__SrsAmf0Null();
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
}; };
@ -142,7 +142,7 @@ public:
__SrsAmf0Undefined(); __SrsAmf0Undefined();
virtual ~__SrsAmf0Undefined(); virtual ~__SrsAmf0Undefined();
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
}; };
@ -162,7 +162,7 @@ public:
__SrsUnSortedHashtable(); __SrsUnSortedHashtable();
virtual ~__SrsUnSortedHashtable(); virtual ~__SrsUnSortedHashtable();
virtual int size(); virtual int count();
virtual void clear(); virtual void clear();
virtual std::string key_at(int index); virtual std::string key_at(int index);
virtual SrsAmf0Any* value_at(int index); virtual SrsAmf0Any* value_at(int index);
@ -186,7 +186,7 @@ public:
__SrsAmf0ObjectEOF(); __SrsAmf0ObjectEOF();
virtual ~__SrsAmf0ObjectEOF(); virtual ~__SrsAmf0ObjectEOF();
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
}; };
@ -407,7 +407,7 @@ __SrsUnSortedHashtable::~__SrsUnSortedHashtable()
properties.clear(); properties.clear();
} }
int __SrsUnSortedHashtable::size() int __SrsUnSortedHashtable::count()
{ {
return (int)properties.size(); return (int)properties.size();
} }
@ -419,14 +419,14 @@ void __SrsUnSortedHashtable::clear()
std::string __SrsUnSortedHashtable::key_at(int index) std::string __SrsUnSortedHashtable::key_at(int index)
{ {
srs_assert(index < size()); srs_assert(index < count());
SrsObjectPropertyType& elem = properties[index]; SrsObjectPropertyType& elem = properties[index];
return elem.first; return elem.first;
} }
SrsAmf0Any* __SrsUnSortedHashtable::value_at(int index) SrsAmf0Any* __SrsUnSortedHashtable::value_at(int index)
{ {
srs_assert(index < size()); srs_assert(index < count());
SrsObjectPropertyType& elem = properties[index]; SrsObjectPropertyType& elem = properties[index];
return elem.second; return elem.second;
} }
@ -511,7 +511,7 @@ __SrsAmf0ObjectEOF::~__SrsAmf0ObjectEOF()
{ {
} }
int __SrsAmf0ObjectEOF::size() int __SrsAmf0ObjectEOF::total_size()
{ {
return SrsAmf0Size::object_eof(); return SrsAmf0Size::object_eof();
} }
@ -594,11 +594,11 @@ SrsAmf0Object::~SrsAmf0Object()
srs_freep(eof); srs_freep(eof);
} }
int SrsAmf0Object::size() int SrsAmf0Object::total_size()
{ {
int size = 1; int size = 1;
for (int i = 0; i < properties->size(); i++){ for (int i = 0; i < properties->count(); i++){
std::string name = key_at(i); std::string name = key_at(i);
SrsAmf0Any* value = value_at(i); SrsAmf0Any* value = value_at(i);
@ -681,7 +681,7 @@ int SrsAmf0Object::write(SrsStream* stream)
srs_verbose("amf0 write object marker success"); srs_verbose("amf0 write object marker success");
// value // value
for (int i = 0; i < properties->size(); i++) { for (int i = 0; i < properties->count(); i++) {
std::string name = this->key_at(i); std::string name = this->key_at(i);
SrsAmf0Any* any = this->value_at(i); SrsAmf0Any* any = this->value_at(i);
@ -710,7 +710,7 @@ int SrsAmf0Object::write(SrsStream* stream)
int SrsAmf0Object::count() int SrsAmf0Object::count()
{ {
return properties->size(); return properties->count();
} }
std::string SrsAmf0Object::key_at(int index) std::string SrsAmf0Object::key_at(int index)
@ -756,11 +756,11 @@ SrsAmf0EcmaArray::~SrsAmf0EcmaArray()
srs_freep(eof); srs_freep(eof);
} }
int SrsAmf0EcmaArray::size() int SrsAmf0EcmaArray::total_size()
{ {
int size = 1 + 4; int size = 1 + 4;
for (int i = 0; i < properties->size(); i++){ for (int i = 0; i < properties->count(); i++){
std::string name = key_at(i); std::string name = key_at(i);
SrsAmf0Any* value = value_at(i); SrsAmf0Any* value = value_at(i);
@ -863,7 +863,7 @@ int SrsAmf0EcmaArray::write(SrsStream* stream)
srs_verbose("amf0 write ecma_array count success. count=%d", _count); srs_verbose("amf0 write ecma_array count success. count=%d", _count);
// value // value
for (int i = 0; i < properties->size(); i++) { for (int i = 0; i < properties->count(); i++) {
std::string name = this->key_at(i); std::string name = this->key_at(i);
SrsAmf0Any* any = this->value_at(i); SrsAmf0Any* any = this->value_at(i);
@ -897,7 +897,7 @@ void SrsAmf0EcmaArray::clear()
int SrsAmf0EcmaArray::count() int SrsAmf0EcmaArray::count()
{ {
return properties->size(); return properties->count();
} }
std::string SrsAmf0EcmaArray::key_at(int index) std::string SrsAmf0EcmaArray::key_at(int index)
@ -961,7 +961,7 @@ int SrsAmf0Size::object(SrsAmf0Object* obj)
return 0; return 0;
} }
return obj->size(); return obj->total_size();
} }
int SrsAmf0Size::object_eof() int SrsAmf0Size::object_eof()
@ -975,7 +975,7 @@ int SrsAmf0Size::ecma_array(SrsAmf0EcmaArray* arr)
return 0; return 0;
} }
return arr->size(); return arr->total_size();
} }
int SrsAmf0Size::any(SrsAmf0Any* o) int SrsAmf0Size::any(SrsAmf0Any* o)
@ -984,7 +984,7 @@ int SrsAmf0Size::any(SrsAmf0Any* o)
return 0; return 0;
} }
return o->size(); return o->total_size();
} }
__SrsAmf0String::__SrsAmf0String(const char* _value) __SrsAmf0String::__SrsAmf0String(const char* _value)
@ -999,7 +999,7 @@ __SrsAmf0String::~__SrsAmf0String()
{ {
} }
int __SrsAmf0String::size() int __SrsAmf0String::total_size()
{ {
return SrsAmf0Size::str(value); return SrsAmf0Size::str(value);
} }
@ -1024,7 +1024,7 @@ __SrsAmf0Boolean::~__SrsAmf0Boolean()
{ {
} }
int __SrsAmf0Boolean::size() int __SrsAmf0Boolean::total_size()
{ {
return SrsAmf0Size::boolean(); return SrsAmf0Size::boolean();
} }
@ -1049,7 +1049,7 @@ __SrsAmf0Number::~__SrsAmf0Number()
{ {
} }
int __SrsAmf0Number::size() int __SrsAmf0Number::total_size()
{ {
return SrsAmf0Size::number(); return SrsAmf0Size::number();
} }
@ -1073,7 +1073,7 @@ __SrsAmf0Null::~__SrsAmf0Null()
{ {
} }
int __SrsAmf0Null::size() int __SrsAmf0Null::total_size()
{ {
return SrsAmf0Size::null(); return SrsAmf0Size::null();
} }
@ -1097,7 +1097,7 @@ __SrsAmf0Undefined::~__SrsAmf0Undefined()
{ {
} }
int __SrsAmf0Undefined::size() int __SrsAmf0Undefined::total_size()
{ {
return SrsAmf0Size::undefined(); return SrsAmf0Size::undefined();
} }

View file

@ -121,7 +121,7 @@ public:
/** /**
* get the size of amf0 any, including the marker size. * get the size of amf0 any, including the marker size.
*/ */
virtual int size() = 0; virtual int total_size() = 0;
/** /**
* read elem from stream * read elem from stream
*/ */
@ -159,7 +159,7 @@ public:
virtual ~SrsAmf0Object(); virtual ~SrsAmf0Object();
public: public:
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
@ -198,7 +198,7 @@ public:
virtual ~SrsAmf0EcmaArray(); virtual ~SrsAmf0EcmaArray();
public: public:
virtual int size(); virtual int total_size();
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);

View file

@ -1884,17 +1884,8 @@ int SrsConnectAppResPacket::get_message_type()
int SrsConnectAppResPacket::get_size() int SrsConnectAppResPacket::get_size()
{ {
int size = SrsAmf0Size::str(command_name) + SrsAmf0Size::number(); return SrsAmf0Size::str(command_name) + SrsAmf0Size::number()
+ SrsAmf0Size::object(props) + SrsAmf0Size::object(info);
if (props->size() > 0) {
size += SrsAmf0Size::object(props);
}
if (info->size() > 0) {
size += SrsAmf0Size::object(info);
}
return size;
} }
int SrsConnectAppResPacket::encode_packet(SrsStream* stream) int SrsConnectAppResPacket::encode_packet(SrsStream* stream)

View file

@ -383,7 +383,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_EQ(3, s.pos()); EXPECT_EQ(3, s.pos());
s.reset(); s.reset();
@ -397,7 +397,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_EQ(3, s.pos()); EXPECT_EQ(3, s.pos());
s.skip(-3); s.skip(-3);
@ -412,7 +412,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
EXPECT_EQ(2, s.read_1bytes()); EXPECT_EQ(2, s.read_1bytes());
@ -423,7 +423,7 @@ VOID TEST(AMF0Test, AnyIO)
s.reset(); s.reset();
s.current()[3] = 'x'; s.current()[3] = 'x';
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_STREQ("xinlin", o->to_str().c_str()); EXPECT_STREQ("xinlin", o->to_str().c_str());
} }
@ -435,14 +435,14 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
EXPECT_EQ(0, s.read_1bytes()); EXPECT_EQ(0, s.read_1bytes());
s.reset(); s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_DOUBLE_EQ(10, o->to_number()); EXPECT_DOUBLE_EQ(10, o->to_number());
} }
@ -454,14 +454,14 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
EXPECT_EQ(1, s.read_1bytes()); EXPECT_EQ(1, s.read_1bytes());
s.reset(); s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_TRUE(o->to_boolean()); EXPECT_TRUE(o->to_boolean());
} }
if (true) { if (true) {
@ -471,14 +471,14 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
EXPECT_EQ(1, s.read_1bytes()); EXPECT_EQ(1, s.read_1bytes());
s.reset(); s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_FALSE(o->to_boolean()); EXPECT_FALSE(o->to_boolean());
} }
@ -490,14 +490,14 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
EXPECT_EQ(5, s.read_1bytes()); EXPECT_EQ(5, s.read_1bytes());
s.reset(); s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_TRUE(o->is_null()); EXPECT_TRUE(o->is_null());
} }
@ -509,14 +509,14 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
EXPECT_EQ(6, s.read_1bytes()); EXPECT_EQ(6, s.read_1bytes());
s.reset(); s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
EXPECT_TRUE(o->is_undefined()); EXPECT_TRUE(o->is_undefined());
} }
@ -528,7 +528,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
@ -548,7 +548,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
@ -568,7 +568,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
@ -588,7 +588,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();
@ -607,7 +607,7 @@ VOID TEST(AMF0Test, AnyIO)
SrsAutoFree(SrsAmf0Any, o, false); SrsAutoFree(SrsAmf0Any, o, false);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->size(), s.pos()); EXPECT_EQ(o->total_size(), s.pos());
s.reset(); s.reset();