1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

json objects support dumps to string.

This commit is contained in:
winlin 2015-09-19 12:27:31 +08:00
parent b78781707e
commit 3f7e69b617
14 changed files with 729 additions and 761 deletions

View file

@ -344,6 +344,7 @@ Remark:
## History ## History
* v3.0, 2015-09-19, json objects support dumps to string.
* v3.0, 2015-09-14, fix [#459][bug #459], support dvr raw api. 3.0.4 * v3.0, 2015-09-14, fix [#459][bug #459], support dvr raw api. 3.0.4
* v3.0, 2015-09-14, fix [#459][bug #459], dvr support apply filter for ng-control dvr module. * v3.0, 2015-09-14, fix [#459][bug #459], dvr support apply filter for ng-control dvr module.
* v3.0, 2015-09-14, fix [#319][bug #319], http raw api support update global and vhost. 3.0.3 * v3.0, 2015-09-14, fix [#319][bug #319], http raw api support update global and vhost. 3.0.3

View file

@ -75,7 +75,7 @@ using namespace _srs_internal;
* @param dir the transcode or ingest config directive. * @param dir the transcode or ingest config directive.
* @param engine the amf0 object to dumps to. * @param engine the amf0 object to dumps to.
*/ */
int srs_config_dumps_engine(SrsConfDirective* dir, SrsAmf0Object* engine); int srs_config_dumps_engine(SrsConfDirective* dir, SrsJsonObject* engine);
/** /**
* whether the two vector actual equals, for instance, * whether the two vector actual equals, for instance,
@ -511,21 +511,21 @@ int srs_config_transform_vhost(SrsConfDirective* root)
return ret; return ret;
} }
int srs_config_dumps_engine(SrsConfDirective* dir, SrsAmf0Object* engine) int srs_config_dumps_engine(SrsConfDirective* dir, SrsJsonObject* engine)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
SrsConfDirective* conf = NULL; SrsConfDirective* conf = NULL;
engine->set("id", dir->dumps_arg0_to_str()); engine->set("id", dir->dumps_arg0_to_str());
engine->set("enabled", SrsAmf0Any::boolean(_srs_config->get_engine_enabled(dir))); engine->set("enabled", SrsJsonAny::boolean(_srs_config->get_engine_enabled(dir)));
if ((conf = dir->get("iformat")) != NULL) { if ((conf = dir->get("iformat")) != NULL) {
engine->set("iformat", conf->dumps_arg0_to_str()); engine->set("iformat", conf->dumps_arg0_to_str());
} }
if ((conf = dir->get("vfilter")) != NULL) { if ((conf = dir->get("vfilter")) != NULL) {
SrsAmf0Object* vfilter = SrsAmf0Any::object(); SrsJsonObject* vfilter = SrsJsonAny::object();
engine->set("vfilter", vfilter); engine->set("vfilter", vfilter);
for (int i = 0; i < (int)conf->directives.size(); i++) { for (int i = 0; i < (int)conf->directives.size(); i++) {
@ -567,7 +567,7 @@ int srs_config_dumps_engine(SrsConfDirective* dir, SrsAmf0Object* engine)
} }
if ((conf = dir->get("vparams")) != NULL) { if ((conf = dir->get("vparams")) != NULL) {
SrsAmf0Object* vparams = SrsAmf0Any::object(); SrsJsonObject* vparams = SrsJsonAny::object();
engine->set("vparams", vparams); engine->set("vparams", vparams);
for (int i = 0; i < (int)conf->directives.size(); i++) { for (int i = 0; i < (int)conf->directives.size(); i++) {
@ -593,7 +593,7 @@ int srs_config_dumps_engine(SrsConfDirective* dir, SrsAmf0Object* engine)
} }
if ((conf = dir->get("aparams")) != NULL) { if ((conf = dir->get("aparams")) != NULL) {
SrsAmf0Object* aparams = SrsAmf0Any::object(); SrsJsonObject* aparams = SrsJsonAny::object();
engine->set("aparams", aparams); engine->set("aparams", aparams);
for (int i = 0; i < (int)conf->directives.size(); i++) { for (int i = 0; i < (int)conf->directives.size(); i++) {
@ -868,29 +868,29 @@ int SrsConfDirective::persistence(SrsFileWriter* writer, int level)
return ret; return ret;
} }
SrsAmf0StrictArray* SrsConfDirective::dumps_args() SrsJsonArray* SrsConfDirective::dumps_args()
{ {
SrsAmf0StrictArray* arr = SrsAmf0Any::strict_array(); SrsJsonArray* arr = SrsJsonAny::array();
for (int i = 0; i < (int)args.size(); i++) { for (int i = 0; i < (int)args.size(); i++) {
string arg = args.at(i); string arg = args.at(i);
arr->append(SrsAmf0Any::str(arg.c_str())); arr->append(SrsJsonAny::str(arg.c_str()));
} }
return arr; return arr;
} }
SrsAmf0Any* SrsConfDirective::dumps_arg0_to_str() SrsJsonAny* SrsConfDirective::dumps_arg0_to_str()
{ {
return SrsAmf0Any::str(arg0().c_str()); return SrsJsonAny::str(arg0().c_str());
} }
SrsAmf0Any* SrsConfDirective::dumps_arg0_to_number() SrsJsonAny* SrsConfDirective::dumps_arg0_to_number()
{ {
return SrsAmf0Any::number(::atof(arg0().c_str())); return SrsJsonAny::number(::atof(arg0().c_str()));
} }
SrsAmf0Any* SrsConfDirective::dumps_arg0_to_boolean() SrsJsonAny* SrsConfDirective::dumps_arg0_to_boolean()
{ {
return SrsAmf0Any::boolean(arg0() == "on"); return SrsJsonAny::boolean(arg0() == "on");
} }
// see: ngx_conf_parse // see: ngx_conf_parse
@ -1994,7 +1994,7 @@ int SrsConfig::persistence()
return ret; return ret;
} }
int SrsConfig::minimal_to_json(SrsAmf0Object* obj) int SrsConfig::minimal_to_json(SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -2012,7 +2012,7 @@ int SrsConfig::minimal_to_json(SrsAmf0Object* obj)
return ret; return ret;
} }
int SrsConfig::global_to_json(SrsAmf0Object* obj) int SrsConfig::global_to_json(SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -2045,7 +2045,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} else if (dir->name == "pithy_print_ms") { } else if (dir->name == "pithy_print_ms") {
obj->set(dir->name, dir->dumps_arg0_to_number()); obj->set(dir->name, dir->dumps_arg0_to_number());
} else if (dir->name == "heartbeat") { } else if (dir->name == "heartbeat") {
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
for (int j = 0; j < (int)dir->directives.size(); j++) { for (int j = 0; j < (int)dir->directives.size(); j++) {
SrsConfDirective* sdir = dir->directives.at(j); SrsConfDirective* sdir = dir->directives.at(j);
if (sdir->name == "enabled") { if (sdir->name == "enabled") {
@ -2062,7 +2062,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
obj->set(dir->name, sobj); obj->set(dir->name, sobj);
} else if (dir->name == "stats") { } else if (dir->name == "stats") {
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
for (int j = 0; j < (int)dir->directives.size(); j++) { for (int j = 0; j < (int)dir->directives.size(); j++) {
SrsConfDirective* sdir = dir->directives.at(j); SrsConfDirective* sdir = dir->directives.at(j);
if (sdir->name == "network") { if (sdir->name == "network") {
@ -2073,7 +2073,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
obj->set(dir->name, sobj); obj->set(dir->name, sobj);
} else if (dir->name == "http_api") { } else if (dir->name == "http_api") {
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
for (int j = 0; j < (int)dir->directives.size(); j++) { for (int j = 0; j < (int)dir->directives.size(); j++) {
SrsConfDirective* sdir = dir->directives.at(j); SrsConfDirective* sdir = dir->directives.at(j);
if (sdir->name == "enabled") { if (sdir->name == "enabled") {
@ -2083,7 +2083,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} else if (sdir->name == "crossdomain") { } else if (sdir->name == "crossdomain") {
sobj->set(sdir->name, sdir->dumps_arg0_to_boolean()); sobj->set(sdir->name, sdir->dumps_arg0_to_boolean());
} else if (sdir->name == "raw_api") { } else if (sdir->name == "raw_api") {
SrsAmf0Object* ssobj = SrsAmf0Any::object(); SrsJsonObject* ssobj = SrsJsonAny::object();
sobj->set(sdir->name, ssobj); sobj->set(sdir->name, ssobj);
for (int j = 0; j < (int)sdir->directives.size(); j++) { for (int j = 0; j < (int)sdir->directives.size(); j++) {
@ -2102,7 +2102,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
obj->set(dir->name, sobj); obj->set(dir->name, sobj);
} else if (dir->name == "http_server") { } else if (dir->name == "http_server") {
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
for (int j = 0; j < (int)dir->directives.size(); j++) { for (int j = 0; j < (int)dir->directives.size(); j++) {
SrsConfDirective* sdir = dir->directives.at(j); SrsConfDirective* sdir = dir->directives.at(j);
if (sdir->name == "enabled") { if (sdir->name == "enabled") {
@ -2115,7 +2115,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
obj->set(dir->name, sobj); obj->set(dir->name, sobj);
} else if (dir->name == "stream_caster") { } else if (dir->name == "stream_caster") {
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
for (int j = 0; j < (int)dir->directives.size(); j++) { for (int j = 0; j < (int)dir->directives.size(); j++) {
SrsConfDirective* sdir = dir->directives.at(j); SrsConfDirective* sdir = dir->directives.at(j);
if (sdir->name == "enabled") { if (sdir->name == "enabled") {
@ -2138,7 +2138,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
} }
SrsAmf0Object* sobjs = SrsAmf0Any::object(); SrsJsonObject* sobjs = SrsJsonAny::object();
int nb_vhosts = 0; int nb_vhosts = 0;
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
@ -2149,73 +2149,73 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
nb_vhosts++; nb_vhosts++;
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
sobjs->set(dir->arg0(), sobj); sobjs->set(dir->arg0(), sobj);
SrsStatisticVhost* svhost = stat->find_vhost(dir->arg0()); SrsStatisticVhost* svhost = stat->find_vhost(dir->arg0());
sobj->set("id", SrsAmf0Any::number(svhost? (double)svhost->id : 0)); sobj->set("id", SrsJsonAny::number(svhost? (double)svhost->id : 0));
sobj->set("name", dir->dumps_arg0_to_str()); sobj->set("name", dir->dumps_arg0_to_str());
sobj->set("enabled", SrsAmf0Any::boolean(get_vhost_enabled(dir->arg0()))); sobj->set("enabled", SrsJsonAny::boolean(get_vhost_enabled(dir->arg0())));
if (get_dvr_enabled(dir->arg0())) { if (get_dvr_enabled(dir->arg0())) {
sobj->set("dvr", SrsAmf0Any::boolean(true)); sobj->set("dvr", SrsJsonAny::boolean(true));
} }
if (get_vhost_http_enabled(dir->arg0())) { if (get_vhost_http_enabled(dir->arg0())) {
sobj->set("http_static", SrsAmf0Any::boolean(true)); sobj->set("http_static", SrsJsonAny::boolean(true));
} }
if (get_vhost_http_remux_enabled(dir->arg0())) { if (get_vhost_http_remux_enabled(dir->arg0())) {
sobj->set("http_remux", SrsAmf0Any::boolean(true)); sobj->set("http_remux", SrsJsonAny::boolean(true));
} }
if (get_hls_enabled(dir->arg0())) { if (get_hls_enabled(dir->arg0())) {
sobj->set("hls", SrsAmf0Any::boolean(true)); sobj->set("hls", SrsJsonAny::boolean(true));
} }
if (get_hds_enabled(dir->arg0())) { if (get_hds_enabled(dir->arg0())) {
sobj->set("hds", SrsAmf0Any::boolean(true)); sobj->set("hds", SrsJsonAny::boolean(true));
} }
if (get_vhost_http_hooks(dir->arg0())) { if (get_vhost_http_hooks(dir->arg0())) {
sobj->set("http_hooks", SrsAmf0Any::boolean(true)); sobj->set("http_hooks", SrsJsonAny::boolean(true));
} }
if (get_exec_enabled(dir->arg0())) { if (get_exec_enabled(dir->arg0())) {
sobj->set("exec", SrsAmf0Any::boolean(true)); sobj->set("exec", SrsJsonAny::boolean(true));
} }
if (get_bw_check_enabled(dir->arg0())) { if (get_bw_check_enabled(dir->arg0())) {
sobj->set("bandcheck", SrsAmf0Any::boolean(true)); sobj->set("bandcheck", SrsJsonAny::boolean(true));
} }
if (!get_vhost_is_edge(dir->arg0())) { if (!get_vhost_is_edge(dir->arg0())) {
sobj->set("origin", SrsAmf0Any::boolean(true)); sobj->set("origin", SrsJsonAny::boolean(true));
} }
if (get_forward_enabled(dir->arg0())) { if (get_forward_enabled(dir->arg0())) {
sobj->set("forward", SrsAmf0Any::boolean(true)); sobj->set("forward", SrsJsonAny::boolean(true));
} }
if (get_security_enabled(dir->arg0())) { if (get_security_enabled(dir->arg0())) {
sobj->set("security", SrsAmf0Any::boolean(true)); sobj->set("security", SrsJsonAny::boolean(true));
} }
if (get_refer_enabled(dir->arg0())) { if (get_refer_enabled(dir->arg0())) {
sobj->set("refer", SrsAmf0Any::boolean(true)); sobj->set("refer", SrsJsonAny::boolean(true));
} }
if (get_mr_enabled(dir->arg0())) { if (get_mr_enabled(dir->arg0())) {
sobj->set("mr", SrsAmf0Any::boolean(true)); sobj->set("mr", SrsJsonAny::boolean(true));
} }
if (get_realtime_enabled(dir->arg0())) { if (get_realtime_enabled(dir->arg0())) {
sobj->set("min_latency", SrsAmf0Any::boolean(true)); sobj->set("min_latency", SrsJsonAny::boolean(true));
} }
if (get_gop_cache(dir->arg0())) { if (get_gop_cache(dir->arg0())) {
sobj->set("gop_cache", SrsAmf0Any::boolean(true)); sobj->set("gop_cache", SrsJsonAny::boolean(true));
} }
if (get_tcp_nodelay(dir->arg0())) { if (get_tcp_nodelay(dir->arg0())) {
sobj->set("tcp_nodelay", SrsAmf0Any::boolean(true)); sobj->set("tcp_nodelay", SrsJsonAny::boolean(true));
} }
if (get_mix_correct(dir->arg0())) { if (get_mix_correct(dir->arg0())) {
sobj->set("mix_correct", SrsAmf0Any::boolean(true)); sobj->set("mix_correct", SrsJsonAny::boolean(true));
} }
if (get_time_jitter(dir->arg0()) != SrsRtmpJitterAlgorithmOFF) { if (get_time_jitter(dir->arg0()) != SrsRtmpJitterAlgorithmOFF) {
sobj->set("time_jitter", SrsAmf0Any::boolean(true)); sobj->set("time_jitter", SrsJsonAny::boolean(true));
} }
if (get_atc(dir->arg0())) { if (get_atc(dir->arg0())) {
sobj->set("atc", SrsAmf0Any::boolean(true)); sobj->set("atc", SrsJsonAny::boolean(true));
} }
bool has_transcode = false; bool has_transcode = false;
@ -2242,7 +2242,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
} }
if (has_transcode) { if (has_transcode) {
sobj->set("transcode", SrsAmf0Any::boolean(has_transcode)); sobj->set("transcode", SrsJsonAny::boolean(has_transcode));
} }
bool has_ingest = false; bool has_ingest = false;
@ -2258,17 +2258,17 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
} }
} }
if (has_ingest) { if (has_ingest) {
sobj->set("ingest", SrsAmf0Any::boolean(has_ingest)); sobj->set("ingest", SrsJsonAny::boolean(has_ingest));
} }
} }
obj->set("nb_vhosts", SrsAmf0Any::number(nb_vhosts)); obj->set("nb_vhosts", SrsJsonAny::number(nb_vhosts));
obj->set("vhosts", sobjs); obj->set("vhosts", sobjs);
return ret; return ret;
} }
int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj) int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -2278,10 +2278,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsStatisticVhost* svhost = stat->find_vhost(vhost->arg0()); SrsStatisticVhost* svhost = stat->find_vhost(vhost->arg0());
obj->set("id", SrsAmf0Any::number(svhost? (double)svhost->id : 0)); obj->set("id", SrsJsonAny::number(svhost? (double)svhost->id : 0));
obj->set("name", vhost->dumps_arg0_to_str()); obj->set("name", vhost->dumps_arg0_to_str());
obj->set("enabled", SrsAmf0Any::boolean(get_vhost_enabled(vhost))); obj->set("enabled", SrsJsonAny::boolean(get_vhost_enabled(vhost)));
// vhost scope configs. // vhost scope configs.
if ((dir = vhost->get("chunk_size")) != NULL) { if ((dir = vhost->get("chunk_size")) != NULL) {
@ -2296,7 +2296,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// cluster. // cluster.
if ((dir = vhost->get("cluster")) != NULL) { if ((dir = vhost->get("cluster")) != NULL) {
SrsAmf0Object* cluster = SrsAmf0Any::object(); SrsJsonObject* cluster = SrsJsonAny::object();
obj->set("cluster", cluster); obj->set("cluster", cluster);
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
@ -2318,10 +2318,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// forward // forward
if ((dir = vhost->get("forward")) != NULL) { if ((dir = vhost->get("forward")) != NULL) {
SrsAmf0Object* forward = SrsAmf0Any::object(); SrsJsonObject* forward = SrsJsonAny::object();
obj->set("forward", forward); obj->set("forward", forward);
forward->set("enabled", SrsAmf0Any::boolean(get_forward_enabled(vhost->name))); forward->set("enabled", SrsJsonAny::boolean(get_forward_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2334,7 +2334,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// play // play
if ((dir = vhost->get("play")) != NULL) { if ((dir = vhost->get("play")) != NULL) {
SrsAmf0Object* play = SrsAmf0Any::object(); SrsJsonObject* play = SrsJsonAny::object();
obj->set("play", play); obj->set("play", play);
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
@ -2364,7 +2364,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// publish // publish
if ((dir = vhost->get("publish")) != NULL) { if ((dir = vhost->get("publish")) != NULL) {
SrsAmf0Object* publish = SrsAmf0Any::object(); SrsJsonObject* publish = SrsJsonAny::object();
obj->set("publish", publish); obj->set("publish", publish);
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
@ -2384,10 +2384,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// refer // refer
if ((dir = vhost->get("refer")) != NULL) { if ((dir = vhost->get("refer")) != NULL) {
SrsAmf0Object* refer = SrsAmf0Any::object(); SrsJsonObject* refer = SrsJsonAny::object();
obj->set("refer", refer); obj->set("refer", refer);
refer->set("enabled", SrsAmf0Any::boolean(get_refer_enabled(vhost->name))); refer->set("enabled", SrsJsonAny::boolean(get_refer_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2404,10 +2404,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// bandcheck // bandcheck
if ((dir = vhost->get("bandcheck")) != NULL) { if ((dir = vhost->get("bandcheck")) != NULL) {
SrsAmf0Object* bandcheck = SrsAmf0Any::object(); SrsJsonObject* bandcheck = SrsJsonAny::object();
obj->set("bandcheck", bandcheck); obj->set("bandcheck", bandcheck);
bandcheck->set("enabled", SrsAmf0Any::boolean(get_bw_check_enabled(vhost->name))); bandcheck->set("enabled", SrsJsonAny::boolean(get_bw_check_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2424,31 +2424,31 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// security // security
if ((dir = vhost->get("security")) != NULL) { if ((dir = vhost->get("security")) != NULL) {
SrsAmf0Object* security = SrsAmf0Any::object(); SrsJsonObject* security = SrsJsonAny::object();
obj->set("security", security); obj->set("security", security);
security->set("enabled", SrsAmf0Any::boolean(get_security_enabled(vhost->name))); security->set("enabled", SrsJsonAny::boolean(get_security_enabled(vhost->name)));
SrsAmf0StrictArray* allows = SrsAmf0Any::strict_array(); SrsJsonArray* allows = SrsJsonAny::array();
security->set("allows", allows); security->set("allows", allows);
SrsAmf0StrictArray* denies = SrsAmf0Any::strict_array(); SrsJsonArray* denies = SrsJsonAny::array();
security->set("denies", denies); security->set("denies", denies);
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
if (sdir->name == "allow") { if (sdir->name == "allow") {
SrsAmf0Object* allow = SrsAmf0Any::object(); SrsJsonObject* allow = SrsJsonAny::object();
allow->set("action", SrsAmf0Any::str(sdir->name.c_str())); allow->set("action", SrsJsonAny::str(sdir->name.c_str()));
allow->set("method", SrsAmf0Any::str(sdir->arg0().c_str())); allow->set("method", SrsJsonAny::str(sdir->arg0().c_str()));
allow->set("entry", SrsAmf0Any::str(sdir->arg1().c_str())); allow->set("entry", SrsJsonAny::str(sdir->arg1().c_str()));
allows->append(allow); allows->append(allow);
} else if (sdir->name == "deny") { } else if (sdir->name == "deny") {
SrsAmf0Object* deny = SrsAmf0Any::object(); SrsJsonObject* deny = SrsJsonAny::object();
deny->set("action", SrsAmf0Any::str(sdir->name.c_str())); deny->set("action", SrsJsonAny::str(sdir->name.c_str()));
deny->set("method", SrsAmf0Any::str(sdir->arg0().c_str())); deny->set("method", SrsJsonAny::str(sdir->arg0().c_str()));
deny->set("entry", SrsAmf0Any::str(sdir->arg1().c_str())); deny->set("entry", SrsJsonAny::str(sdir->arg1().c_str()));
denies->append(deny); denies->append(deny);
} }
} }
@ -2456,10 +2456,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// http_static // http_static
if ((dir = vhost->get("http_static")) != NULL) { if ((dir = vhost->get("http_static")) != NULL) {
SrsAmf0Object* http_static = SrsAmf0Any::object(); SrsJsonObject* http_static = SrsJsonAny::object();
obj->set("http_static", http_static); obj->set("http_static", http_static);
http_static->set("enabled", SrsAmf0Any::boolean(get_vhost_http_enabled(vhost->name))); http_static->set("enabled", SrsJsonAny::boolean(get_vhost_http_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2474,10 +2474,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// http_remux // http_remux
if ((dir = vhost->get("http_remux")) != NULL) { if ((dir = vhost->get("http_remux")) != NULL) {
SrsAmf0Object* http_remux = SrsAmf0Any::object(); SrsJsonObject* http_remux = SrsJsonAny::object();
obj->set("http_remux", http_remux); obj->set("http_remux", http_remux);
http_remux->set("enabled", SrsAmf0Any::boolean(get_vhost_http_remux_enabled(vhost->name))); http_remux->set("enabled", SrsJsonAny::boolean(get_vhost_http_remux_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2494,10 +2494,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// http_hooks // http_hooks
if ((dir = vhost->get("http_hooks")) != NULL) { if ((dir = vhost->get("http_hooks")) != NULL) {
SrsAmf0Object* http_hooks = SrsAmf0Any::object(); SrsJsonObject* http_hooks = SrsJsonAny::object();
obj->set("http_hooks", http_hooks); obj->set("http_hooks", http_hooks);
http_hooks->set("enabled", SrsAmf0Any::boolean(get_vhost_http_hooks_enabled(vhost->name))); http_hooks->set("enabled", SrsJsonAny::boolean(get_vhost_http_hooks_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2526,10 +2526,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// hls // hls
if ((dir = vhost->get("hls")) != NULL) { if ((dir = vhost->get("hls")) != NULL) {
SrsAmf0Object* hls = SrsAmf0Any::object(); SrsJsonObject* hls = SrsJsonAny::object();
obj->set("hls", hls); obj->set("hls", hls);
hls->set("enabled", SrsAmf0Any::boolean(get_hls_enabled(vhost->name))); hls->set("enabled", SrsJsonAny::boolean(get_hls_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2576,10 +2576,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// hds // hds
if ((dir = vhost->get("hds")) != NULL) { if ((dir = vhost->get("hds")) != NULL) {
SrsAmf0Object* hds = SrsAmf0Any::object(); SrsJsonObject* hds = SrsJsonAny::object();
obj->set("hds", hds); obj->set("hds", hds);
hds->set("enabled", SrsAmf0Any::boolean(get_hds_enabled(vhost->name))); hds->set("enabled", SrsJsonAny::boolean(get_hds_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2596,10 +2596,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// dvr // dvr
if ((dir = vhost->get("dvr")) != NULL) { if ((dir = vhost->get("dvr")) != NULL) {
SrsAmf0Object* dvr = SrsAmf0Any::object(); SrsJsonObject* dvr = SrsJsonAny::object();
obj->set("dvr", dvr); obj->set("dvr", dvr);
dvr->set("enabled", SrsAmf0Any::boolean(get_dvr_enabled(vhost->name))); dvr->set("enabled", SrsJsonAny::boolean(get_dvr_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2622,10 +2622,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// exec // exec
if ((dir = vhost->get("exec")) != NULL) { if ((dir = vhost->get("exec")) != NULL) {
SrsAmf0Object* ng_exec = SrsAmf0Any::object(); SrsJsonObject* ng_exec = SrsJsonAny::object();
obj->set("exec", ng_exec); obj->set("exec", ng_exec);
ng_exec->set("enabled", SrsAmf0Any::boolean(get_exec_enabled(vhost->name))); ng_exec->set("enabled", SrsJsonAny::boolean(get_exec_enabled(vhost->name)));
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
SrsConfDirective* sdir = dir->directives.at(i); SrsConfDirective* sdir = dir->directives.at(i);
@ -2637,7 +2637,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
} }
// ingest // ingest
SrsAmf0StrictArray* ingests = NULL; SrsJsonArray* ingests = NULL;
for (int i = 0; i < (int)vhost->directives.size(); i++) { for (int i = 0; i < (int)vhost->directives.size(); i++) {
dir = vhost->directives.at(i); dir = vhost->directives.at(i);
if (dir->name != "ingest") { if (dir->name != "ingest") {
@ -2645,20 +2645,20 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
} }
if (!ingests) { if (!ingests) {
ingests = SrsAmf0Any::strict_array(); ingests = SrsJsonAny::array();
obj->set("ingests", ingests); obj->set("ingests", ingests);
} }
SrsAmf0Object* ingest = SrsAmf0Any::object(); SrsJsonObject* ingest = SrsJsonAny::object();
ingest->set("id", dir->dumps_arg0_to_str()); ingest->set("id", dir->dumps_arg0_to_str());
ingest->set("enabled", SrsAmf0Any::boolean(get_ingest_enabled(dir))); ingest->set("enabled", SrsJsonAny::boolean(get_ingest_enabled(dir)));
ingests->append(ingest); ingests->append(ingest);
for (int j = 0; j < (int)dir->directives.size(); j++) { for (int j = 0; j < (int)dir->directives.size(); j++) {
SrsConfDirective* sdir = dir->directives.at(j); SrsConfDirective* sdir = dir->directives.at(j);
if (sdir->name == "input") { if (sdir->name == "input") {
SrsAmf0Object* input = SrsAmf0Any::object(); SrsJsonObject* input = SrsJsonAny::object();
ingest->set("input", input); ingest->set("input", input);
SrsConfDirective* type = sdir->get("type"); SrsConfDirective* type = sdir->get("type");
@ -2673,7 +2673,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
} else if (sdir->name == "ffmpeg") { } else if (sdir->name == "ffmpeg") {
ingest->set("ffmpeg", sdir->dumps_arg0_to_str()); ingest->set("ffmpeg", sdir->dumps_arg0_to_str());
} else if (sdir->name == "engine") { } else if (sdir->name == "engine") {
SrsAmf0Object* engine = SrsAmf0Any::object(); SrsJsonObject* engine = SrsJsonAny::object();
ingest->set("engine", engine); ingest->set("engine", engine);
if ((ret = srs_config_dumps_engine(sdir, engine)) != ERROR_SUCCESS) { if ((ret = srs_config_dumps_engine(sdir, engine)) != ERROR_SUCCESS) {
@ -2684,7 +2684,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
} }
// transcode // transcode
SrsAmf0StrictArray* transcodes = NULL; SrsJsonArray* transcodes = NULL;
for (int i = 0; i < (int)vhost->directives.size(); i++) { for (int i = 0; i < (int)vhost->directives.size(); i++) {
dir = vhost->directives.at(i); dir = vhost->directives.at(i);
if (dir->name != "transcode") { if (dir->name != "transcode") {
@ -2692,17 +2692,17 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
} }
if (!transcodes) { if (!transcodes) {
transcodes = SrsAmf0Any::strict_array(); transcodes = SrsJsonAny::array();
obj->set("transcodes", transcodes); obj->set("transcodes", transcodes);
} }
SrsAmf0Object* transcode = SrsAmf0Any::object(); SrsJsonObject* transcode = SrsJsonAny::object();
transcodes->append(transcode); transcodes->append(transcode);
transcode->set("apply", dir->dumps_arg0_to_str()); transcode->set("apply", dir->dumps_arg0_to_str());
transcode->set("enabled", SrsAmf0Any::boolean(get_transcode_enabled(dir))); transcode->set("enabled", SrsJsonAny::boolean(get_transcode_enabled(dir)));
SrsAmf0StrictArray* engines = SrsAmf0Any::strict_array(); SrsJsonArray* engines = SrsJsonAny::array();
transcode->set("engines", engines); transcode->set("engines", engines);
for (int i = 0; i < (int)dir->directives.size(); i++) { for (int i = 0; i < (int)dir->directives.size(); i++) {
@ -2711,7 +2711,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
if (sdir->name == "ffmpeg") { if (sdir->name == "ffmpeg") {
transcode->set("ffmpeg", sdir->dumps_arg0_to_str()); transcode->set("ffmpeg", sdir->dumps_arg0_to_str());
} else if (sdir->name == "engine") { } else if (sdir->name == "engine") {
SrsAmf0Object* engine = SrsAmf0Any::object(); SrsJsonObject* engine = SrsJsonAny::object();
engines->append(engine); engines->append(engine);
if ((ret = srs_config_dumps_engine(sdir, engine)) != ERROR_SUCCESS) { if ((ret = srs_config_dumps_engine(sdir, engine)) != ERROR_SUCCESS) {
@ -2724,24 +2724,24 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
return ret; return ret;
} }
int SrsConfig::raw_to_json(SrsAmf0Object* obj) int SrsConfig::raw_to_json(SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
SrsAmf0Object* sobj = SrsAmf0Any::object(); SrsJsonObject* sobj = SrsJsonAny::object();
obj->set("http_api", sobj); obj->set("http_api", sobj);
sobj->set("enabled", SrsAmf0Any::boolean(get_http_api_enabled())); sobj->set("enabled", SrsJsonAny::boolean(get_http_api_enabled()));
sobj->set("listen", SrsAmf0Any::str(get_http_api_listen().c_str())); sobj->set("listen", SrsJsonAny::str(get_http_api_listen().c_str()));
sobj->set("crossdomain", SrsAmf0Any::boolean(get_http_api_crossdomain())); sobj->set("crossdomain", SrsJsonAny::boolean(get_http_api_crossdomain()));
SrsAmf0Object* ssobj = SrsAmf0Any::object(); SrsJsonObject* ssobj = SrsJsonAny::object();
sobj->set("raw_api", ssobj); sobj->set("raw_api", ssobj);
ssobj->set("enabled", SrsAmf0Any::boolean(get_raw_api())); ssobj->set("enabled", SrsJsonAny::boolean(get_raw_api()));
ssobj->set("allow_reload", SrsAmf0Any::boolean(get_raw_api_allow_reload())); ssobj->set("allow_reload", SrsJsonAny::boolean(get_raw_api_allow_reload()));
ssobj->set("allow_query", SrsAmf0Any::boolean(get_raw_api_allow_query())); ssobj->set("allow_query", SrsJsonAny::boolean(get_raw_api_allow_query()));
ssobj->set("allow_update", SrsAmf0Any::boolean(get_raw_api_allow_update())); ssobj->set("allow_update", SrsJsonAny::boolean(get_raw_api_allow_update()));
return ret; return ret;
} }

View file

@ -40,9 +40,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class SrsRequest; class SrsRequest;
class SrsFileWriter; class SrsFileWriter;
class SrsAmf0Object; class SrsJsonObject;
class SrsAmf0StrictArray; class SrsJsonArray;
class SrsAmf0Any; class SrsJsonAny;
class SrsConfig; class SrsConfig;
class SrsRequest; class SrsRequest;
@ -250,13 +250,13 @@ public:
/** /**
* dumps the args[0-N] to array(string). * dumps the args[0-N] to array(string).
*/ */
virtual SrsAmf0StrictArray* dumps_args(); virtual SrsJsonArray* dumps_args();
/** /**
* dumps arg0 to str, number or boolean. * dumps arg0 to str, number or boolean.
*/ */
virtual SrsAmf0Any* dumps_arg0_to_str(); virtual SrsJsonAny* dumps_arg0_to_str();
virtual SrsAmf0Any* dumps_arg0_to_number(); virtual SrsJsonAny* dumps_arg0_to_number();
virtual SrsAmf0Any* dumps_arg0_to_boolean(); virtual SrsJsonAny* dumps_arg0_to_boolean();
// private parse. // private parse.
private: private:
/** /**
@ -416,19 +416,19 @@ public:
/** /**
* dumps the global sections to json. * dumps the global sections to json.
*/ */
virtual int global_to_json(SrsAmf0Object* obj); virtual int global_to_json(SrsJsonObject* obj);
/** /**
* dumps the minimal sections to json. * dumps the minimal sections to json.
*/ */
virtual int minimal_to_json(SrsAmf0Object* obj); virtual int minimal_to_json(SrsJsonObject* obj);
/** /**
* dumps the vhost section to json. * dumps the vhost section to json.
*/ */
virtual int vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj); virtual int vhost_to_json(SrsConfDirective* vhost, SrsJsonObject* obj);
/** /**
* dumps the http_api sections to json for raw api info. * dumps the http_api sections to json for raw api info.
*/ */
virtual int raw_to_json(SrsAmf0Object* obj); virtual int raw_to_json(SrsJsonObject* obj);
/** /**
* raw set the global listen. * raw set the global listen.
*/ */

View file

@ -66,14 +66,14 @@ void SrsHttpHeartbeat::heartbeat()
ip = ips[_srs_config->get_stats_network() % (int)ips.size()]; ip = ips[_srs_config->get_stats_network() % (int)ips.size()];
} }
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("device_id", SrsAmf0Any::str(device_id.c_str())); obj->set("device_id", SrsJsonAny::str(device_id.c_str()));
obj->set("ip", SrsAmf0Any::str(ip.c_str())); obj->set("ip", SrsJsonAny::str(ip.c_str()));
if (_srs_config->get_heartbeat_summaries()) { if (_srs_config->get_heartbeat_summaries()) {
SrsAmf0Object* summaries = SrsAmf0Any::object(); SrsJsonObject* summaries = SrsJsonAny::object();
obj->set("summaries", summaries); obj->set("summaries", summaries);
srs_api_dump_summaries(summaries); srs_api_dump_summaries(summaries);

View file

@ -78,10 +78,10 @@ int srs_api_response_jsonp(ISrsHttpResponseWriter* w, string callback, string da
int srs_api_response_jsonp_code(ISrsHttpResponseWriter* w, string callback, int code) int srs_api_response_jsonp_code(ISrsHttpResponseWriter* w, string callback, int code)
{ {
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(code)); obj->set("code", SrsJsonAny::ingeter(code));
return srs_api_response_jsonp(w, callback, obj->to_json()); return srs_api_response_jsonp(w, callback, obj->to_json());
} }
@ -98,10 +98,10 @@ int srs_api_response_json(ISrsHttpResponseWriter* w, string data)
int srs_api_response_json_code(ISrsHttpResponseWriter* w, int code) int srs_api_response_json_code(ISrsHttpResponseWriter* w, int code)
{ {
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(code)); obj->set("code", SrsJsonAny::ingeter(code));
return srs_api_response_json(w, obj->to_json()); return srs_api_response_json(w, obj->to_json());
} }
@ -142,16 +142,16 @@ int SrsGoApiRoot::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* urls = SrsAmf0Any::object(); SrsJsonObject* urls = SrsJsonAny::object();
obj->set("urls", urls); obj->set("urls", urls);
urls->set("api", SrsAmf0Any::str("the api root")); urls->set("api", SrsJsonAny::str("the api root"));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -168,16 +168,16 @@ int SrsGoApiApi::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* urls = SrsAmf0Any::object(); SrsJsonObject* urls = SrsJsonAny::object();
obj->set("urls", urls); obj->set("urls", urls);
urls->set("v1", SrsAmf0Any::str("the api version 1.0")); urls->set("v1", SrsJsonAny::str("the api version 1.0"));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -194,36 +194,36 @@ int SrsGoApiV1::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* urls = SrsAmf0Any::object(); SrsJsonObject* urls = SrsJsonAny::object();
obj->set("urls", urls); obj->set("urls", urls);
urls->set("versions", SrsAmf0Any::str("the version of SRS")); urls->set("versions", SrsJsonAny::str("the version of SRS"));
urls->set("summaries", SrsAmf0Any::str("the summary(pid, argv, pwd, cpu, mem) of SRS")); urls->set("summaries", SrsJsonAny::str("the summary(pid, argv, pwd, cpu, mem) of SRS"));
urls->set("rusages", SrsAmf0Any::str("the rusage of SRS")); urls->set("rusages", SrsJsonAny::str("the rusage of SRS"));
urls->set("self_proc_stats", SrsAmf0Any::str("the self process stats")); urls->set("self_proc_stats", SrsJsonAny::str("the self process stats"));
urls->set("system_proc_stats", SrsAmf0Any::str("the system process stats")); urls->set("system_proc_stats", SrsJsonAny::str("the system process stats"));
urls->set("meminfos", SrsAmf0Any::str("the meminfo of system")); urls->set("meminfos", SrsJsonAny::str("the meminfo of system"));
urls->set("authors", SrsAmf0Any::str("the license, copyright, authors and contributors")); urls->set("authors", SrsJsonAny::str("the license, copyright, authors and contributors"));
urls->set("features", SrsAmf0Any::str("the supported features of SRS")); urls->set("features", SrsJsonAny::str("the supported features of SRS"));
urls->set("requests", SrsAmf0Any::str("the request itself, for http debug")); urls->set("requests", SrsJsonAny::str("the request itself, for http debug"));
urls->set("vhosts", SrsAmf0Any::str("manage all vhosts or specified vhost")); urls->set("vhosts", SrsJsonAny::str("manage all vhosts or specified vhost"));
urls->set("streams", SrsAmf0Any::str("manage all streams or specified stream")); urls->set("streams", SrsJsonAny::str("manage all streams or specified stream"));
urls->set("clients", SrsAmf0Any::str("manage all clients or specified client, default query top 10 clients")); urls->set("clients", SrsJsonAny::str("manage all clients or specified client, default query top 10 clients"));
urls->set("raw", SrsAmf0Any::str("raw api for srs, support CUID srs for instance the config")); urls->set("raw", SrsJsonAny::str("raw api for srs, support CUID srs for instance the config"));
SrsAmf0Object* tests = SrsAmf0Any::object(); SrsJsonObject* tests = SrsJsonAny::object();
obj->set("tests", tests); obj->set("tests", tests);
tests->set("requests", SrsAmf0Any::str("show the request info")); tests->set("requests", SrsJsonAny::str("show the request info"));
tests->set("errors", SrsAmf0Any::str("always return an error 100")); tests->set("errors", SrsJsonAny::str("always return an error 100"));
tests->set("redirects", SrsAmf0Any::str("always redirect to /api/v1/test/errors")); tests->set("redirects", SrsJsonAny::str("always redirect to /api/v1/test/errors"));
tests->set("[vhost]", SrsAmf0Any::str("http vhost for http://error.srs.com:1985/api/v1/tests/errors")); tests->set("[vhost]", SrsJsonAny::str("http vhost for http://error.srs.com:1985/api/v1/tests/errors"));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -240,19 +240,19 @@ int SrsGoApiVersion::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
data->set("major", SrsAmf0Any::number(VERSION_MAJOR)); data->set("major", SrsJsonAny::number(VERSION_MAJOR));
data->set("minor", SrsAmf0Any::number(VERSION_MINOR)); data->set("minor", SrsJsonAny::number(VERSION_MINOR));
data->set("revision", SrsAmf0Any::number(VERSION_REVISION)); data->set("revision", SrsJsonAny::number(VERSION_REVISION));
data->set("version", SrsAmf0Any::str(RTMP_SIG_SRS_VERSION)); data->set("version", SrsJsonAny::str(RTMP_SIG_SRS_VERSION));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -267,8 +267,8 @@ SrsGoApiSummaries::~SrsGoApiSummaries()
int SrsGoApiSummaries::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) int SrsGoApiSummaries::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
srs_api_dump_summaries(obj); srs_api_dump_summaries(obj);
@ -287,35 +287,35 @@ int SrsGoApiRusages::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
SrsRusage* ru = srs_get_system_rusage(); SrsRusage* ru = srs_get_system_rusage();
data->set("ok", SrsAmf0Any::boolean(ru->ok)); data->set("ok", SrsJsonAny::boolean(ru->ok));
data->set("sample_time", SrsAmf0Any::number(ru->sample_time)); data->set("sample_time", SrsJsonAny::number(ru->sample_time));
data->set("ru_utime", SrsAmf0Any::number(ru->r.ru_utime.tv_sec)); data->set("ru_utime", SrsJsonAny::number(ru->r.ru_utime.tv_sec));
data->set("ru_stime", SrsAmf0Any::number(ru->r.ru_stime.tv_sec)); data->set("ru_stime", SrsJsonAny::number(ru->r.ru_stime.tv_sec));
data->set("ru_maxrss", SrsAmf0Any::number(ru->r.ru_maxrss)); data->set("ru_maxrss", SrsJsonAny::number(ru->r.ru_maxrss));
data->set("ru_ixrss", SrsAmf0Any::number(ru->r.ru_ixrss)); data->set("ru_ixrss", SrsJsonAny::number(ru->r.ru_ixrss));
data->set("ru_idrss", SrsAmf0Any::number(ru->r.ru_idrss)); data->set("ru_idrss", SrsJsonAny::number(ru->r.ru_idrss));
data->set("ru_isrss", SrsAmf0Any::number(ru->r.ru_isrss)); data->set("ru_isrss", SrsJsonAny::number(ru->r.ru_isrss));
data->set("ru_minflt", SrsAmf0Any::number(ru->r.ru_minflt)); data->set("ru_minflt", SrsJsonAny::number(ru->r.ru_minflt));
data->set("ru_majflt", SrsAmf0Any::number(ru->r.ru_majflt)); data->set("ru_majflt", SrsJsonAny::number(ru->r.ru_majflt));
data->set("ru_nswap", SrsAmf0Any::number(ru->r.ru_nswap)); data->set("ru_nswap", SrsJsonAny::number(ru->r.ru_nswap));
data->set("ru_inblock", SrsAmf0Any::number(ru->r.ru_inblock)); data->set("ru_inblock", SrsJsonAny::number(ru->r.ru_inblock));
data->set("ru_oublock", SrsAmf0Any::number(ru->r.ru_oublock)); data->set("ru_oublock", SrsJsonAny::number(ru->r.ru_oublock));
data->set("ru_msgsnd", SrsAmf0Any::number(ru->r.ru_msgsnd)); data->set("ru_msgsnd", SrsJsonAny::number(ru->r.ru_msgsnd));
data->set("ru_msgrcv", SrsAmf0Any::number(ru->r.ru_msgrcv)); data->set("ru_msgrcv", SrsJsonAny::number(ru->r.ru_msgrcv));
data->set("ru_nsignals", SrsAmf0Any::number(ru->r.ru_nsignals)); data->set("ru_nsignals", SrsJsonAny::number(ru->r.ru_nsignals));
data->set("ru_nvcsw", SrsAmf0Any::number(ru->r.ru_nvcsw)); data->set("ru_nvcsw", SrsJsonAny::number(ru->r.ru_nvcsw));
data->set("ru_nivcsw", SrsAmf0Any::number(ru->r.ru_nivcsw)); data->set("ru_nivcsw", SrsJsonAny::number(ru->r.ru_nivcsw));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -332,13 +332,13 @@ int SrsGoApiSelfProcStats::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
SrsProcSelfStat* u = srs_get_self_proc_stat(); SrsProcSelfStat* u = srs_get_self_proc_stat();
@ -346,53 +346,53 @@ int SrsGoApiSelfProcStats::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage
string state; string state;
state += (char)u->state; state += (char)u->state;
data->set("ok", SrsAmf0Any::boolean(u->ok)); data->set("ok", SrsJsonAny::boolean(u->ok));
data->set("sample_time", SrsAmf0Any::number(u->sample_time)); data->set("sample_time", SrsJsonAny::number(u->sample_time));
data->set("percent", SrsAmf0Any::number(u->percent)); data->set("percent", SrsJsonAny::number(u->percent));
data->set("pid", SrsAmf0Any::number(u->pid)); data->set("pid", SrsJsonAny::number(u->pid));
data->set("comm", SrsAmf0Any::str(u->comm)); data->set("comm", SrsJsonAny::str(u->comm));
data->set("state", SrsAmf0Any::str(state.c_str())); data->set("state", SrsJsonAny::str(state.c_str()));
data->set("ppid", SrsAmf0Any::number(u->ppid)); data->set("ppid", SrsJsonAny::number(u->ppid));
data->set("pgrp", SrsAmf0Any::number(u->pgrp)); data->set("pgrp", SrsJsonAny::number(u->pgrp));
data->set("session", SrsAmf0Any::number(u->session)); data->set("session", SrsJsonAny::number(u->session));
data->set("tty_nr", SrsAmf0Any::number(u->tty_nr)); data->set("tty_nr", SrsJsonAny::number(u->tty_nr));
data->set("tpgid", SrsAmf0Any::number(u->tpgid)); data->set("tpgid", SrsJsonAny::number(u->tpgid));
data->set("flags", SrsAmf0Any::number(u->flags)); data->set("flags", SrsJsonAny::number(u->flags));
data->set("minflt", SrsAmf0Any::number(u->minflt)); data->set("minflt", SrsJsonAny::number(u->minflt));
data->set("cminflt", SrsAmf0Any::number(u->cminflt)); data->set("cminflt", SrsJsonAny::number(u->cminflt));
data->set("majflt", SrsAmf0Any::number(u->majflt)); data->set("majflt", SrsJsonAny::number(u->majflt));
data->set("cmajflt", SrsAmf0Any::number(u->cmajflt)); data->set("cmajflt", SrsJsonAny::number(u->cmajflt));
data->set("utime", SrsAmf0Any::number(u->utime)); data->set("utime", SrsJsonAny::number(u->utime));
data->set("stime", SrsAmf0Any::number(u->stime)); data->set("stime", SrsJsonAny::number(u->stime));
data->set("cutime", SrsAmf0Any::number(u->cutime)); data->set("cutime", SrsJsonAny::number(u->cutime));
data->set("cstime", SrsAmf0Any::number(u->cstime)); data->set("cstime", SrsJsonAny::number(u->cstime));
data->set("priority", SrsAmf0Any::number(u->priority)); data->set("priority", SrsJsonAny::number(u->priority));
data->set("nice", SrsAmf0Any::number(u->nice)); data->set("nice", SrsJsonAny::number(u->nice));
data->set("num_threads", SrsAmf0Any::number(u->num_threads)); data->set("num_threads", SrsJsonAny::number(u->num_threads));
data->set("itrealvalue", SrsAmf0Any::number(u->itrealvalue)); data->set("itrealvalue", SrsJsonAny::number(u->itrealvalue));
data->set("starttime", SrsAmf0Any::number(u->starttime)); data->set("starttime", SrsJsonAny::number(u->starttime));
data->set("vsize", SrsAmf0Any::number(u->vsize)); data->set("vsize", SrsJsonAny::number(u->vsize));
data->set("rss", SrsAmf0Any::number(u->rss)); data->set("rss", SrsJsonAny::number(u->rss));
data->set("rsslim", SrsAmf0Any::number(u->rsslim)); data->set("rsslim", SrsJsonAny::number(u->rsslim));
data->set("startcode", SrsAmf0Any::number(u->startcode)); data->set("startcode", SrsJsonAny::number(u->startcode));
data->set("endcode", SrsAmf0Any::number(u->endcode)); data->set("endcode", SrsJsonAny::number(u->endcode));
data->set("startstack", SrsAmf0Any::number(u->startstack)); data->set("startstack", SrsJsonAny::number(u->startstack));
data->set("kstkesp", SrsAmf0Any::number(u->kstkesp)); data->set("kstkesp", SrsJsonAny::number(u->kstkesp));
data->set("kstkeip", SrsAmf0Any::number(u->kstkeip)); data->set("kstkeip", SrsJsonAny::number(u->kstkeip));
data->set("signal", SrsAmf0Any::number(u->signal)); data->set("signal", SrsJsonAny::number(u->signal));
data->set("blocked", SrsAmf0Any::number(u->blocked)); data->set("blocked", SrsJsonAny::number(u->blocked));
data->set("sigignore", SrsAmf0Any::number(u->sigignore)); data->set("sigignore", SrsJsonAny::number(u->sigignore));
data->set("sigcatch", SrsAmf0Any::number(u->sigcatch)); data->set("sigcatch", SrsJsonAny::number(u->sigcatch));
data->set("wchan", SrsAmf0Any::number(u->wchan)); data->set("wchan", SrsJsonAny::number(u->wchan));
data->set("nswap", SrsAmf0Any::number(u->nswap)); data->set("nswap", SrsJsonAny::number(u->nswap));
data->set("cnswap", SrsAmf0Any::number(u->cnswap)); data->set("cnswap", SrsJsonAny::number(u->cnswap));
data->set("exit_signal", SrsAmf0Any::number(u->exit_signal)); data->set("exit_signal", SrsJsonAny::number(u->exit_signal));
data->set("processor", SrsAmf0Any::number(u->processor)); data->set("processor", SrsJsonAny::number(u->processor));
data->set("rt_priority", SrsAmf0Any::number(u->rt_priority)); data->set("rt_priority", SrsJsonAny::number(u->rt_priority));
data->set("policy", SrsAmf0Any::number(u->policy)); data->set("policy", SrsJsonAny::number(u->policy));
data->set("delayacct_blkio_ticks", SrsAmf0Any::number(u->delayacct_blkio_ticks)); data->set("delayacct_blkio_ticks", SrsJsonAny::number(u->delayacct_blkio_ticks));
data->set("guest_time", SrsAmf0Any::number(u->guest_time)); data->set("guest_time", SrsJsonAny::number(u->guest_time));
data->set("cguest_time", SrsAmf0Any::number(u->cguest_time)); data->set("cguest_time", SrsJsonAny::number(u->cguest_time));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -409,29 +409,29 @@ int SrsGoApiSystemProcStats::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
SrsProcSystemStat* s = srs_get_system_proc_stat(); SrsProcSystemStat* s = srs_get_system_proc_stat();
data->set("ok", SrsAmf0Any::boolean(s->ok)); data->set("ok", SrsJsonAny::boolean(s->ok));
data->set("sample_time", SrsAmf0Any::number(s->sample_time)); data->set("sample_time", SrsJsonAny::number(s->sample_time));
data->set("percent", SrsAmf0Any::number(s->percent)); data->set("percent", SrsJsonAny::number(s->percent));
data->set("user", SrsAmf0Any::number(s->user)); data->set("user", SrsJsonAny::number(s->user));
data->set("nice", SrsAmf0Any::number(s->nice)); data->set("nice", SrsJsonAny::number(s->nice));
data->set("sys", SrsAmf0Any::number(s->sys)); data->set("sys", SrsJsonAny::number(s->sys));
data->set("idle", SrsAmf0Any::number(s->idle)); data->set("idle", SrsJsonAny::number(s->idle));
data->set("iowait", SrsAmf0Any::number(s->iowait)); data->set("iowait", SrsJsonAny::number(s->iowait));
data->set("irq", SrsAmf0Any::number(s->irq)); data->set("irq", SrsJsonAny::number(s->irq));
data->set("softirq", SrsAmf0Any::number(s->softirq)); data->set("softirq", SrsJsonAny::number(s->softirq));
data->set("steal", SrsAmf0Any::number(s->steal)); data->set("steal", SrsJsonAny::number(s->steal));
data->set("guest", SrsAmf0Any::number(s->guest)); data->set("guest", SrsJsonAny::number(s->guest));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -448,30 +448,30 @@ int SrsGoApiMemInfos::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
SrsMemInfo* m = srs_get_meminfo(); SrsMemInfo* m = srs_get_meminfo();
data->set("ok", SrsAmf0Any::boolean(m->ok)); data->set("ok", SrsJsonAny::boolean(m->ok));
data->set("sample_time", SrsAmf0Any::number(m->sample_time)); data->set("sample_time", SrsJsonAny::number(m->sample_time));
data->set("percent_ram", SrsAmf0Any::number(m->percent_ram)); data->set("percent_ram", SrsJsonAny::number(m->percent_ram));
data->set("percent_swap", SrsAmf0Any::number(m->percent_swap)); data->set("percent_swap", SrsJsonAny::number(m->percent_swap));
data->set("MemActive", SrsAmf0Any::number(m->MemActive)); data->set("MemActive", SrsJsonAny::number(m->MemActive));
data->set("RealInUse", SrsAmf0Any::number(m->RealInUse)); data->set("RealInUse", SrsJsonAny::number(m->RealInUse));
data->set("NotInUse", SrsAmf0Any::number(m->NotInUse)); data->set("NotInUse", SrsJsonAny::number(m->NotInUse));
data->set("MemTotal", SrsAmf0Any::number(m->MemTotal)); data->set("MemTotal", SrsJsonAny::number(m->MemTotal));
data->set("MemFree", SrsAmf0Any::number(m->MemFree)); data->set("MemFree", SrsJsonAny::number(m->MemFree));
data->set("Buffers", SrsAmf0Any::number(m->Buffers)); data->set("Buffers", SrsJsonAny::number(m->Buffers));
data->set("Cached", SrsAmf0Any::number(m->Cached)); data->set("Cached", SrsJsonAny::number(m->Cached));
data->set("SwapTotal", SrsAmf0Any::number(m->SwapTotal)); data->set("SwapTotal", SrsJsonAny::number(m->SwapTotal));
data->set("SwapFree", SrsAmf0Any::number(m->SwapFree)); data->set("SwapFree", SrsJsonAny::number(m->SwapFree));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -488,21 +488,21 @@ int SrsGoApiAuthors::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
data->set("primary", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY)); data->set("primary", SrsJsonAny::str(RTMP_SIG_SRS_PRIMARY));
data->set("license", SrsAmf0Any::str(RTMP_SIG_SRS_LICENSE)); data->set("license", SrsJsonAny::str(RTMP_SIG_SRS_LICENSE));
data->set("copyright", SrsAmf0Any::str(RTMP_SIG_SRS_COPYRIGHT)); data->set("copyright", SrsJsonAny::str(RTMP_SIG_SRS_COPYRIGHT));
data->set("authors", SrsAmf0Any::str(RTMP_SIG_SRS_AUTHROS)); data->set("authors", SrsJsonAny::str(RTMP_SIG_SRS_AUTHROS));
data->set("contributors_link", SrsAmf0Any::str(RTMP_SIG_SRS_CONTRIBUTORS_URL)); data->set("contributors_link", SrsJsonAny::str(RTMP_SIG_SRS_CONTRIBUTORS_URL));
data->set("contributors", SrsAmf0Any::str(SRS_AUTO_CONSTRIBUTORS)); data->set("contributors", SrsJsonAny::str(SRS_AUTO_CONSTRIBUTORS));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -519,107 +519,107 @@ int SrsGoApiFeatures::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
data->set("options", SrsAmf0Any::str(SRS_AUTO_USER_CONFIGURE)); data->set("options", SrsJsonAny::str(SRS_AUTO_USER_CONFIGURE));
data->set("options2", SrsAmf0Any::str(SRS_AUTO_CONFIGURE)); data->set("options2", SrsJsonAny::str(SRS_AUTO_CONFIGURE));
data->set("build", SrsAmf0Any::str(SRS_AUTO_BUILD_DATE)); data->set("build", SrsJsonAny::str(SRS_AUTO_BUILD_DATE));
data->set("build2", SrsAmf0Any::str(SRS_AUTO_BUILD_TS)); data->set("build2", SrsJsonAny::str(SRS_AUTO_BUILD_TS));
SrsAmf0Object* features = SrsAmf0Any::object(); SrsJsonObject* features = SrsJsonAny::object();
data->set("features", features); data->set("features", features);
#ifdef SRS_AUTO_SSL #ifdef SRS_AUTO_SSL
features->set("ssl", SrsAmf0Any::boolean(true)); features->set("ssl", SrsJsonAny::boolean(true));
#else #else
features->set("ssl", SrsAmf0Any::boolean(false)); features->set("ssl", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_HLS #ifdef SRS_AUTO_HLS
features->set("hls", SrsAmf0Any::boolean(true)); features->set("hls", SrsJsonAny::boolean(true));
#else #else
features->set("hls", SrsAmf0Any::boolean(false)); features->set("hls", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_HDS #ifdef SRS_AUTO_HDS
features->set("hds", SrsAmf0Any::boolean(true)); features->set("hds", SrsJsonAny::boolean(true));
#else #else
features->set("hds", SrsAmf0Any::boolean(false)); features->set("hds", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_HTTP_CALLBACK #ifdef SRS_AUTO_HTTP_CALLBACK
features->set("callback", SrsAmf0Any::boolean(true)); features->set("callback", SrsJsonAny::boolean(true));
#else #else
features->set("callback", SrsAmf0Any::boolean(false)); features->set("callback", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_HTTP_API #ifdef SRS_AUTO_HTTP_API
features->set("api", SrsAmf0Any::boolean(true)); features->set("api", SrsJsonAny::boolean(true));
#else #else
features->set("api", SrsAmf0Any::boolean(false)); features->set("api", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_HTTP_SERVER #ifdef SRS_AUTO_HTTP_SERVER
features->set("httpd", SrsAmf0Any::boolean(true)); features->set("httpd", SrsJsonAny::boolean(true));
#else #else
features->set("httpd", SrsAmf0Any::boolean(false)); features->set("httpd", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_DVR #ifdef SRS_AUTO_DVR
features->set("dvr", SrsAmf0Any::boolean(true)); features->set("dvr", SrsJsonAny::boolean(true));
#else #else
features->set("dvr", SrsAmf0Any::boolean(false)); features->set("dvr", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_TRANSCODE #ifdef SRS_AUTO_TRANSCODE
features->set("transcode", SrsAmf0Any::boolean(true)); features->set("transcode", SrsJsonAny::boolean(true));
#else #else
features->set("transcode", SrsAmf0Any::boolean(false)); features->set("transcode", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_INGEST #ifdef SRS_AUTO_INGEST
features->set("ingest", SrsAmf0Any::boolean(true)); features->set("ingest", SrsJsonAny::boolean(true));
#else #else
features->set("ingest", SrsAmf0Any::boolean(false)); features->set("ingest", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_STAT #ifdef SRS_AUTO_STAT
features->set("stat", SrsAmf0Any::boolean(true)); features->set("stat", SrsJsonAny::boolean(true));
#else #else
features->set("stat", SrsAmf0Any::boolean(false)); features->set("stat", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_NGINX #ifdef SRS_AUTO_NGINX
features->set("nginx", SrsAmf0Any::boolean(true)); features->set("nginx", SrsJsonAny::boolean(true));
#else #else
features->set("nginx", SrsAmf0Any::boolean(false)); features->set("nginx", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_FFMPEG_TOOL #ifdef SRS_AUTO_FFMPEG_TOOL
features->set("ffmpeg", SrsAmf0Any::boolean(true)); features->set("ffmpeg", SrsJsonAny::boolean(true));
#else #else
features->set("ffmpeg", SrsAmf0Any::boolean(false)); features->set("ffmpeg", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_AUTO_STREAM_CASTER #ifdef SRS_AUTO_STREAM_CASTER
features->set("caster", SrsAmf0Any::boolean(true)); features->set("caster", SrsJsonAny::boolean(true));
#else #else
features->set("caster", SrsAmf0Any::boolean(false)); features->set("caster", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_PERF_COMPLEX_SEND #ifdef SRS_PERF_COMPLEX_SEND
features->set("complex_send", SrsAmf0Any::boolean(true)); features->set("complex_send", SrsJsonAny::boolean(true));
#else #else
features->set("complex_send", SrsAmf0Any::boolean(false)); features->set("complex_send", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_PERF_TCP_NODELAY #ifdef SRS_PERF_TCP_NODELAY
features->set("tcp_nodelay", SrsAmf0Any::boolean(true)); features->set("tcp_nodelay", SrsJsonAny::boolean(true));
#else #else
features->set("tcp_nodelay", SrsAmf0Any::boolean(false)); features->set("tcp_nodelay", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_PERF_SO_SNDBUF_SIZE #ifdef SRS_PERF_SO_SNDBUF_SIZE
features->set("so_sendbuf", SrsAmf0Any::boolean(true)); features->set("so_sendbuf", SrsJsonAny::boolean(true));
#else #else
features->set("so_sendbuf", SrsAmf0Any::boolean(false)); features->set("so_sendbuf", SrsJsonAny::boolean(false));
#endif #endif
#ifdef SRS_PERF_MERGED_READ #ifdef SRS_PERF_MERGED_READ
features->set("mr", SrsAmf0Any::boolean(true)); features->set("mr", SrsJsonAny::boolean(true));
#else #else
features->set("mr", SrsAmf0Any::boolean(false)); features->set("mr", SrsJsonAny::boolean(false));
#endif #endif
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
@ -637,40 +637,40 @@ int SrsGoApiRequests::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{ {
SrsStatistic* stat = SrsStatistic::instance(); SrsStatistic* stat = SrsStatistic::instance();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
data->set("uri", SrsAmf0Any::str(r->uri().c_str())); data->set("uri", SrsJsonAny::str(r->uri().c_str()));
data->set("path", SrsAmf0Any::str(r->path().c_str())); data->set("path", SrsJsonAny::str(r->path().c_str()));
// method // method
data->set("METHOD", SrsAmf0Any::str(r->method_str().c_str())); data->set("METHOD", SrsJsonAny::str(r->method_str().c_str()));
// request headers // request headers
SrsAmf0Object* headers = SrsAmf0Any::object(); SrsJsonObject* headers = SrsJsonAny::object();
data->set("headers", headers); data->set("headers", headers);
for (int i = 0; i < r->request_header_count(); i++) { for (int i = 0; i < r->request_header_count(); i++) {
std::string key = r->request_header_key_at(i); std::string key = r->request_header_key_at(i);
std::string value = r->request_header_value_at(i); std::string value = r->request_header_value_at(i);
headers->set(key, SrsAmf0Any::str(value.c_str())); headers->set(key, SrsJsonAny::str(value.c_str()));
} }
// server informations // server informations
SrsAmf0Object* server = SrsAmf0Any::object(); SrsJsonObject* server = SrsJsonAny::object();
data->set("headers", server); data->set("headers", server);
server->set("sigature", SrsAmf0Any::str(RTMP_SIG_SRS_KEY)); server->set("sigature", SrsJsonAny::str(RTMP_SIG_SRS_KEY));
server->set("name", SrsAmf0Any::str(RTMP_SIG_SRS_NAME)); server->set("name", SrsJsonAny::str(RTMP_SIG_SRS_NAME));
server->set("version", SrsAmf0Any::str(RTMP_SIG_SRS_VERSION)); server->set("version", SrsJsonAny::str(RTMP_SIG_SRS_VERSION));
server->set("link", SrsAmf0Any::str(RTMP_SIG_SRS_URL)); server->set("link", SrsJsonAny::str(RTMP_SIG_SRS_URL));
server->set("time", SrsAmf0Any::number(srs_get_system_time_ms())); server->set("time", SrsJsonAny::number(srs_get_system_time_ms()));
return srs_api_response(w, r, obj->to_json()); return srs_api_response(w, r, obj->to_json());
} }
@ -700,22 +700,22 @@ int SrsGoApiVhosts::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
if (r->is_http_get()) { if (r->is_http_get()) {
if (!vhost) { if (!vhost) {
SrsAmf0StrictArray* data = SrsAmf0Any::strict_array(); SrsJsonArray* data = SrsJsonAny::array();
obj->set("vhosts", data); obj->set("vhosts", data);
if ((ret = stat->dumps_vhosts(data)) != ERROR_SUCCESS) { if ((ret = stat->dumps_vhosts(data)) != ERROR_SUCCESS) {
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
} else { } else {
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("vhost", data);; obj->set("vhost", data);;
if ((ret = vhost->dumps(data)) != ERROR_SUCCESS) { if ((ret = vhost->dumps(data)) != ERROR_SUCCESS) {
@ -754,22 +754,22 @@ int SrsGoApiStreams::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
if (r->is_http_get()) { if (r->is_http_get()) {
if (!stream) { if (!stream) {
SrsAmf0StrictArray* data = SrsAmf0Any::strict_array(); SrsJsonArray* data = SrsJsonAny::array();
obj->set("streams", data); obj->set("streams", data);
if ((ret = stat->dumps_streams(data)) != ERROR_SUCCESS) { if ((ret = stat->dumps_streams(data)) != ERROR_SUCCESS) {
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
} else { } else {
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("stream", data);; obj->set("stream", data);;
if ((ret = stream->dumps(data)) != ERROR_SUCCESS) { if ((ret = stream->dumps(data)) != ERROR_SUCCESS) {
@ -808,22 +808,22 @@ int SrsGoApiClients::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
obj->set("server", SrsAmf0Any::number(stat->server_id())); obj->set("server", SrsJsonAny::number(stat->server_id()));
if (r->is_http_get()) { if (r->is_http_get()) {
if (!client) { if (!client) {
SrsAmf0StrictArray* data = SrsAmf0Any::strict_array(); SrsJsonArray* data = SrsJsonAny::array();
obj->set("clients", data); obj->set("clients", data);
if ((ret = stat->dumps_clients(data, 0, 10)) != ERROR_SUCCESS) { if ((ret = stat->dumps_clients(data, 0, 10)) != ERROR_SUCCESS) {
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
} else { } else {
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("client", data);; obj->set("client", data);;
if ((ret = client->dumps(data)) != ERROR_SUCCESS) { if ((ret = client->dumps(data)) != ERROR_SUCCESS) {
@ -870,9 +870,9 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
std::string rpc = r->query_get("rpc"); std::string rpc = r->query_get("rpc");
// the object to return for request. // the object to return for request.
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); obj->set("code", SrsJsonAny::number(ERROR_SUCCESS));
// for rpc=raw, to query the raw api config for http api. // for rpc=raw, to query the raw api config for http api.
if (rpc == "raw") { if (rpc == "raw") {
@ -952,14 +952,14 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("vhost", data); obj->set("vhost", data);
if ((ret = _srs_config->vhost_to_json(conf, data)) != ERROR_SUCCESS) { if ((ret = _srs_config->vhost_to_json(conf, data)) != ERROR_SUCCESS) {
srs_error("raw api query vhost failed. ret=%d", ret); srs_error("raw api query vhost failed. ret=%d", ret);
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
} else if (scope == "minimal") { } else if (scope == "minimal") {
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("minimal", data); obj->set("minimal", data);
// query minimal scope. // query minimal scope.
@ -968,7 +968,7 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return srs_api_response_code(w, r, ret); return srs_api_response_code(w, r, ret);
} }
} else { } else {
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("global", data); obj->set("global", data);
// query global scope. // query global scope.

View file

@ -63,16 +63,16 @@ int SrsHttpHooks::on_connect(string url, SrsRequest* req)
int client_id = _srs_context->get_id(); int client_id = _srs_context->get_id();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_connect")); obj->set("action", SrsJsonAny::str("on_connect"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("tcUrl", SrsAmf0Any::str(req->tcUrl.c_str())); obj->set("tcUrl", SrsJsonAny::str(req->tcUrl.c_str()));
obj->set("pageUrl", SrsAmf0Any::str(req->pageUrl.c_str())); obj->set("pageUrl", SrsJsonAny::str(req->pageUrl.c_str()));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -99,16 +99,16 @@ void SrsHttpHooks::on_close(string url, SrsRequest* req, int64_t send_bytes, int
int client_id = _srs_context->get_id(); int client_id = _srs_context->get_id();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_close")); obj->set("action", SrsJsonAny::str("on_close"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("send_bytes", SrsAmf0Any::number(send_bytes)); obj->set("send_bytes", SrsJsonAny::number(send_bytes));
obj->set("recv_bytes", SrsAmf0Any::number(recv_bytes)); obj->set("recv_bytes", SrsJsonAny::number(recv_bytes));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -135,15 +135,15 @@ int SrsHttpHooks::on_publish(string url, SrsRequest* req)
int client_id = _srs_context->get_id(); int client_id = _srs_context->get_id();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_publish")); obj->set("action", SrsJsonAny::str("on_publish"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("stream", SrsAmf0Any::str(req->stream.c_str())); obj->set("stream", SrsJsonAny::str(req->stream.c_str()));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -170,15 +170,15 @@ void SrsHttpHooks::on_unpublish(string url, SrsRequest* req)
int client_id = _srs_context->get_id(); int client_id = _srs_context->get_id();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_unpublish")); obj->set("action", SrsJsonAny::str("on_unpublish"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("stream", SrsAmf0Any::str(req->stream.c_str())); obj->set("stream", SrsJsonAny::str(req->stream.c_str()));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -205,16 +205,16 @@ int SrsHttpHooks::on_play(string url, SrsRequest* req)
int client_id = _srs_context->get_id(); int client_id = _srs_context->get_id();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_play")); obj->set("action", SrsJsonAny::str("on_play"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("stream", SrsAmf0Any::str(req->stream.c_str())); obj->set("stream", SrsJsonAny::str(req->stream.c_str()));
obj->set("pageUrl", SrsAmf0Any::str(req->pageUrl.c_str())); obj->set("pageUrl", SrsJsonAny::str(req->pageUrl.c_str()));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -241,15 +241,15 @@ void SrsHttpHooks::on_stop(string url, SrsRequest* req)
int client_id = _srs_context->get_id(); int client_id = _srs_context->get_id();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_stop")); obj->set("action", SrsJsonAny::str("on_stop"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("stream", SrsAmf0Any::str(req->stream.c_str())); obj->set("stream", SrsJsonAny::str(req->stream.c_str()));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -277,17 +277,17 @@ int SrsHttpHooks::on_dvr(int cid, string url, SrsRequest* req, string file)
int client_id = cid; int client_id = cid;
std::string cwd = _srs_config->cwd(); std::string cwd = _srs_config->cwd();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_dvr")); obj->set("action", SrsJsonAny::str("on_dvr"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("stream", SrsAmf0Any::str(req->stream.c_str())); obj->set("stream", SrsJsonAny::str(req->stream.c_str()));
obj->set("cwd", SrsAmf0Any::str(cwd.c_str())); obj->set("cwd", SrsJsonAny::str(cwd.c_str()));
obj->set("file", SrsAmf0Any::str(file.c_str())); obj->set("file", SrsJsonAny::str(file.c_str()));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;
@ -315,22 +315,22 @@ int SrsHttpHooks::on_hls(int cid, string url, SrsRequest* req, string file, stri
int client_id = cid; int client_id = cid;
std::string cwd = _srs_config->cwd(); std::string cwd = _srs_config->cwd();
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
SrsAutoFree(SrsAmf0Object, obj); SrsAutoFree(SrsJsonObject, obj);
obj->set("action", SrsAmf0Any::str("on_hls")); obj->set("action", SrsJsonAny::str("on_hls"));
obj->set("client_id", SrsAmf0Any::number(client_id)); obj->set("client_id", SrsJsonAny::number(client_id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("vhost", SrsAmf0Any::str(req->vhost.c_str())); obj->set("vhost", SrsJsonAny::str(req->vhost.c_str()));
obj->set("app", SrsAmf0Any::str(req->app.c_str())); obj->set("app", SrsJsonAny::str(req->app.c_str()));
obj->set("stream", SrsAmf0Any::str(req->stream.c_str())); obj->set("stream", SrsJsonAny::str(req->stream.c_str()));
obj->set("duration", SrsAmf0Any::number(duration)); obj->set("duration", SrsJsonAny::number(duration));
obj->set("cwd", SrsAmf0Any::str(cwd.c_str())); obj->set("cwd", SrsJsonAny::str(cwd.c_str()));
obj->set("file", SrsAmf0Any::str(file.c_str())); obj->set("file", SrsJsonAny::str(file.c_str()));
obj->set("url", SrsAmf0Any::str(url.c_str())); obj->set("url", SrsJsonAny::str(url.c_str()));
obj->set("m3u8", SrsAmf0Any::str(m3u8.c_str())); obj->set("m3u8", SrsJsonAny::str(m3u8.c_str()));
obj->set("m3u8_url", SrsAmf0Any::str(m3u8_url.c_str())); obj->set("m3u8_url", SrsJsonAny::str(m3u8_url.c_str()));
obj->set("seq_no", SrsAmf0Any::number(sn)); obj->set("seq_no", SrsJsonAny::number(sn));
std::string data = obj->to_json(); std::string data = obj->to_json();
std::string res; std::string res;

View file

@ -58,7 +58,7 @@ SrsStatisticVhost::~SrsStatisticVhost()
srs_freep(kbps); srs_freep(kbps);
} }
int SrsStatisticVhost::dumps(SrsAmf0Object* obj) int SrsStatisticVhost::dumps(SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -66,26 +66,26 @@ int SrsStatisticVhost::dumps(SrsAmf0Object* obj)
bool hls_enabled = _srs_config->get_hls_enabled(vhost); bool hls_enabled = _srs_config->get_hls_enabled(vhost);
bool enabled = _srs_config->get_vhost_enabled(vhost); bool enabled = _srs_config->get_vhost_enabled(vhost);
obj->set("id", SrsAmf0Any::number(id)); obj->set("id", SrsJsonAny::number(id));
obj->set("name", SrsAmf0Any::str(vhost.c_str())); obj->set("name", SrsJsonAny::str(vhost.c_str()));
obj->set("enabled", SrsAmf0Any::boolean(enabled)); obj->set("enabled", SrsJsonAny::boolean(enabled));
obj->set("clients", SrsAmf0Any::number(nb_clients)); obj->set("clients", SrsJsonAny::number(nb_clients));
obj->set("streams", SrsAmf0Any::number(nb_streams)); obj->set("streams", SrsJsonAny::number(nb_streams));
obj->set("send_bytes", SrsAmf0Any::number(kbps->get_send_bytes())); obj->set("send_bytes", SrsJsonAny::number(kbps->get_send_bytes()));
obj->set("recv_bytes", SrsAmf0Any::number(kbps->get_recv_bytes())); obj->set("recv_bytes", SrsJsonAny::number(kbps->get_recv_bytes()));
SrsAmf0Object* okbps = SrsAmf0Any::object(); SrsJsonObject* okbps = SrsJsonAny::object();
obj->set("kbps", okbps); obj->set("kbps", okbps);
okbps->set("recv_30s", SrsAmf0Any::number(kbps->get_recv_kbps_30s())); okbps->set("recv_30s", SrsJsonAny::number(kbps->get_recv_kbps_30s()));
okbps->set("send_30s", SrsAmf0Any::number(kbps->get_send_kbps_30s())); okbps->set("send_30s", SrsJsonAny::number(kbps->get_send_kbps_30s()));
SrsAmf0Object* hls = SrsAmf0Any::object(); SrsJsonObject* hls = SrsJsonAny::object();
obj->set("hls", hls); obj->set("hls", hls);
hls->set("enabled", SrsAmf0Any::boolean(hls_enabled)); hls->set("enabled", SrsJsonAny::boolean(hls_enabled));
if (hls_enabled) { if (hls_enabled) {
hls->set("fragment", SrsAmf0Any::number(_srs_config->get_hls_fragment(vhost))); hls->set("fragment", SrsJsonAny::number(_srs_config->get_hls_fragment(vhost)));
} }
return ret; return ret;
@ -122,54 +122,54 @@ SrsStatisticStream::~SrsStatisticStream()
srs_freep(kbps); srs_freep(kbps);
} }
int SrsStatisticStream::dumps(SrsAmf0Object* obj) int SrsStatisticStream::dumps(SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
obj->set("id", SrsAmf0Any::number(id)); obj->set("id", SrsJsonAny::number(id));
obj->set("name", SrsAmf0Any::str(stream.c_str())); obj->set("name", SrsJsonAny::str(stream.c_str()));
obj->set("vhost", SrsAmf0Any::number(vhost->id)); obj->set("vhost", SrsJsonAny::number(vhost->id));
obj->set("app", SrsAmf0Any::str(app.c_str())); obj->set("app", SrsJsonAny::str(app.c_str()));
obj->set("live_ms", SrsAmf0Any::number(srs_get_system_time_ms())); obj->set("live_ms", SrsJsonAny::number(srs_get_system_time_ms()));
obj->set("clients", SrsAmf0Any::number(nb_clients)); obj->set("clients", SrsJsonAny::number(nb_clients));
obj->set("send_bytes", SrsAmf0Any::number(kbps->get_send_bytes())); obj->set("send_bytes", SrsJsonAny::number(kbps->get_send_bytes()));
obj->set("recv_bytes", SrsAmf0Any::number(kbps->get_recv_bytes())); obj->set("recv_bytes", SrsJsonAny::number(kbps->get_recv_bytes()));
SrsAmf0Object* okbps = SrsAmf0Any::object(); SrsJsonObject* okbps = SrsJsonAny::object();
obj->set("kbps", okbps); obj->set("kbps", okbps);
okbps->set("recv_30s", SrsAmf0Any::number(kbps->get_recv_kbps_30s())); okbps->set("recv_30s", SrsJsonAny::number(kbps->get_recv_kbps_30s()));
okbps->set("send_30s", SrsAmf0Any::number(kbps->get_send_kbps_30s())); okbps->set("send_30s", SrsJsonAny::number(kbps->get_send_kbps_30s()));
SrsAmf0Object* publish = SrsAmf0Any::object(); SrsJsonObject* publish = SrsJsonAny::object();
obj->set("publish", publish); obj->set("publish", publish);
publish->set("active", SrsAmf0Any::boolean(active)); publish->set("active", SrsJsonAny::boolean(active));
publish->set("cid", SrsAmf0Any::number(connection_cid)); publish->set("cid", SrsJsonAny::number(connection_cid));
if (!has_video) { if (!has_video) {
obj->set("video", SrsAmf0Any::null()); obj->set("video", SrsJsonAny::null());
} else { } else {
SrsAmf0Object* video = SrsAmf0Any::object(); SrsJsonObject* video = SrsJsonAny::object();
obj->set("video", video); obj->set("video", video);
video->set("codec", SrsAmf0Any::str(srs_codec_video2str(vcodec).c_str())); video->set("codec", SrsJsonAny::str(srs_codec_video2str(vcodec).c_str()));
video->set("profile", SrsAmf0Any::str(srs_codec_avc_profile2str(avc_profile).c_str())); video->set("profile", SrsJsonAny::str(srs_codec_avc_profile2str(avc_profile).c_str()));
video->set("level", SrsAmf0Any::str(srs_codec_avc_level2str(avc_level).c_str())); video->set("level", SrsJsonAny::str(srs_codec_avc_level2str(avc_level).c_str()));
video->set("width", SrsAmf0Any::number(width)); video->set("width", SrsJsonAny::number(width));
video->set("height", SrsAmf0Any::number(height)); video->set("height", SrsJsonAny::number(height));
} }
if (!has_audio) { if (!has_audio) {
obj->set("audio", SrsAmf0Any::null()); obj->set("audio", SrsJsonAny::null());
} else { } else {
SrsAmf0Object* audio = SrsAmf0Any::object(); SrsJsonObject* audio = SrsJsonAny::object();
obj->set("audio", audio); obj->set("audio", audio);
audio->set("codec", SrsAmf0Any::str(srs_codec_audio2str(acodec).c_str())); audio->set("codec", SrsJsonAny::str(srs_codec_audio2str(acodec).c_str()));
audio->set("sample_rate", SrsAmf0Any::number(flv_sample_rates[asample_rate])); audio->set("sample_rate", SrsJsonAny::number(flv_sample_rates[asample_rate]));
audio->set("channel", SrsAmf0Any::number(asound_type + 1)); audio->set("channel", SrsJsonAny::number(asound_type + 1));
audio->set("profile", SrsAmf0Any::str(srs_codec_aac_object2str(aac_object).c_str())); audio->set("profile", SrsJsonAny::str(srs_codec_aac_object2str(aac_object).c_str()));
} }
return ret; return ret;
@ -206,21 +206,21 @@ SrsStatisticClient::~SrsStatisticClient()
{ {
} }
int SrsStatisticClient::dumps(SrsAmf0Object* obj) int SrsStatisticClient::dumps(SrsJsonObject* obj)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
obj->set("id", SrsAmf0Any::number(id)); obj->set("id", SrsJsonAny::number(id));
obj->set("vhost", SrsAmf0Any::number(stream->vhost->id)); obj->set("vhost", SrsJsonAny::number(stream->vhost->id));
obj->set("stream", SrsAmf0Any::number(stream->id)); obj->set("stream", SrsJsonAny::number(stream->id));
obj->set("ip", SrsAmf0Any::str(req->ip.c_str())); obj->set("ip", SrsJsonAny::str(req->ip.c_str()));
obj->set("pageUrl", SrsAmf0Any::str(req->pageUrl.c_str())); obj->set("pageUrl", SrsJsonAny::str(req->pageUrl.c_str()));
obj->set("swfUrl", SrsAmf0Any::str(req->swfUrl.c_str())); obj->set("swfUrl", SrsJsonAny::str(req->swfUrl.c_str()));
obj->set("tcUrl", SrsAmf0Any::str(req->tcUrl.c_str())); obj->set("tcUrl", SrsJsonAny::str(req->tcUrl.c_str()));
obj->set("url", SrsAmf0Any::str(req->get_stream_url().c_str())); obj->set("url", SrsJsonAny::str(req->get_stream_url().c_str()));
obj->set("type", SrsAmf0Any::str(srs_client_type_string(type).c_str())); obj->set("type", SrsJsonAny::str(srs_client_type_string(type).c_str()));
obj->set("publish", SrsAmf0Any::boolean(srs_client_type_is_publish(type))); obj->set("publish", SrsJsonAny::boolean(srs_client_type_is_publish(type)));
obj->set("alive", SrsAmf0Any::number((srs_get_system_time_ms() - create) / 1000.0)); obj->set("alive", SrsJsonAny::number((srs_get_system_time_ms() - create) / 1000.0));
return ret; return ret;
} }
@ -456,7 +456,7 @@ int64_t SrsStatistic::server_id()
return _server_id; return _server_id;
} }
int SrsStatistic::dumps_vhosts(SrsAmf0StrictArray* arr) int SrsStatistic::dumps_vhosts(SrsJsonArray* arr)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -464,7 +464,7 @@ int SrsStatistic::dumps_vhosts(SrsAmf0StrictArray* arr)
for (it = vhosts.begin(); it != vhosts.end(); it++) { for (it = vhosts.begin(); it != vhosts.end(); it++) {
SrsStatisticVhost* vhost = it->second; SrsStatisticVhost* vhost = it->second;
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
arr->append(obj); arr->append(obj);
if ((ret = vhost->dumps(obj)) != ERROR_SUCCESS) { if ((ret = vhost->dumps(obj)) != ERROR_SUCCESS) {
@ -475,7 +475,7 @@ int SrsStatistic::dumps_vhosts(SrsAmf0StrictArray* arr)
return ret; return ret;
} }
int SrsStatistic::dumps_streams(SrsAmf0StrictArray* arr) int SrsStatistic::dumps_streams(SrsJsonArray* arr)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -483,7 +483,7 @@ int SrsStatistic::dumps_streams(SrsAmf0StrictArray* arr)
for (it = streams.begin(); it != streams.end(); it++) { for (it = streams.begin(); it != streams.end(); it++) {
SrsStatisticStream* stream = it->second; SrsStatisticStream* stream = it->second;
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
arr->append(obj); arr->append(obj);
if ((ret = stream->dumps(obj)) != ERROR_SUCCESS) { if ((ret = stream->dumps(obj)) != ERROR_SUCCESS) {
@ -494,7 +494,7 @@ int SrsStatistic::dumps_streams(SrsAmf0StrictArray* arr)
return ret; return ret;
} }
int SrsStatistic::dumps_clients(SrsAmf0StrictArray* arr, int start, int count) int SrsStatistic::dumps_clients(SrsJsonArray* arr, int start, int count)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
@ -506,7 +506,7 @@ int SrsStatistic::dumps_clients(SrsAmf0StrictArray* arr, int start, int count)
SrsStatisticClient* client = it->second; SrsStatisticClient* client = it->second;
SrsAmf0Object* obj = SrsAmf0Any::object(); SrsJsonObject* obj = SrsJsonAny::object();
arr->append(obj); arr->append(obj);
if ((ret = client->dumps(obj)) != ERROR_SUCCESS) { if ((ret = client->dumps(obj)) != ERROR_SUCCESS) {

View file

@ -40,8 +40,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class SrsKbps; class SrsKbps;
class SrsRequest; class SrsRequest;
class SrsConnection; class SrsConnection;
class SrsAmf0Object; class SrsJsonObject;
class SrsAmf0StrictArray; class SrsJsonArray;
struct SrsStatisticVhost struct SrsStatisticVhost
{ {
@ -59,7 +59,7 @@ public:
SrsStatisticVhost(); SrsStatisticVhost();
virtual ~SrsStatisticVhost(); virtual ~SrsStatisticVhost();
public: public:
virtual int dumps(SrsAmf0Object* obj); virtual int dumps(SrsJsonObject* obj);
}; };
struct SrsStatisticStream struct SrsStatisticStream
@ -104,7 +104,7 @@ public:
SrsStatisticStream(); SrsStatisticStream();
virtual ~SrsStatisticStream(); virtual ~SrsStatisticStream();
public: public:
virtual int dumps(SrsAmf0Object* obj); virtual int dumps(SrsJsonObject* obj);
public: public:
/** /**
* publish the stream. * publish the stream.
@ -129,7 +129,7 @@ public:
SrsStatisticClient(); SrsStatisticClient();
virtual ~SrsStatisticClient(); virtual ~SrsStatisticClient();
public: public:
virtual int dumps(SrsAmf0Object* obj); virtual int dumps(SrsJsonObject* obj);
}; };
class SrsStatistic class SrsStatistic
@ -226,17 +226,17 @@ public:
/** /**
* dumps the vhosts to amf0 array. * dumps the vhosts to amf0 array.
*/ */
virtual int dumps_vhosts(SrsAmf0StrictArray* arr); virtual int dumps_vhosts(SrsJsonArray* arr);
/** /**
* dumps the streams to amf0 array. * dumps the streams to amf0 array.
*/ */
virtual int dumps_streams(SrsAmf0StrictArray* arr); virtual int dumps_streams(SrsJsonArray* arr);
/** /**
* dumps the clients to amf0 array * dumps the clients to amf0 array
* @param start the start index, from 0. * @param start the start index, from 0.
* @param count the max count of clients to dump. * @param count the max count of clients to dump.
*/ */
virtual int dumps_clients(SrsAmf0StrictArray* arr, int start, int count); virtual int dumps_clients(SrsJsonArray* arr, int start, int count);
private: private:
virtual SrsStatisticVhost* create_vhost(SrsRequest* req); virtual SrsStatisticVhost* create_vhost(SrsRequest* req);
virtual SrsStatisticStream* create_stream(SrsStatisticVhost* vhost, SrsRequest* req); virtual SrsStatisticStream* create_stream(SrsStatisticVhost* vhost, SrsRequest* req);

View file

@ -1372,7 +1372,7 @@ bool srs_is_boolean(const string& str)
return str == "true" || str == "false"; return str == "true" || str == "false";
} }
void srs_api_dump_summaries(SrsAmf0Object* obj) void srs_api_dump_summaries(SrsJsonObject* obj)
{ {
SrsRusage* r = srs_get_system_rusage(); SrsRusage* r = srs_get_system_rusage();
SrsProcSelfStat* u = srs_get_self_proc_stat(); SrsProcSelfStat* u = srs_get_self_proc_stat();
@ -1425,62 +1425,62 @@ void srs_api_dump_summaries(SrsAmf0Object* obj)
bool ok = (r->ok && u->ok && s->ok && c->ok bool ok = (r->ok && u->ok && s->ok && c->ok
&& d->ok && m->ok && p->ok && nrs->ok); && d->ok && m->ok && p->ok && nrs->ok);
SrsAmf0Object* data = SrsAmf0Any::object(); SrsJsonObject* data = SrsJsonAny::object();
obj->set("data", data); obj->set("data", data);
data->set("ok", SrsAmf0Any::boolean(ok)); data->set("ok", SrsJsonAny::boolean(ok));
data->set("now_ms", SrsAmf0Any::number(now)); data->set("now_ms", SrsJsonAny::number(now));
// self // self
SrsAmf0Object* self = SrsAmf0Any::object(); SrsJsonObject* self = SrsJsonAny::object();
data->set("self", self); data->set("self", self);
self->set("version", SrsAmf0Any::str(RTMP_SIG_SRS_VERSION)); self->set("version", SrsJsonAny::str(RTMP_SIG_SRS_VERSION));
self->set("pid", SrsAmf0Any::number(getpid())); self->set("pid", SrsJsonAny::number(getpid()));
self->set("ppid", SrsAmf0Any::number(u->ppid)); self->set("ppid", SrsJsonAny::number(u->ppid));
self->set("argv", SrsAmf0Any::str(_srs_config->argv().c_str())); self->set("argv", SrsJsonAny::str(_srs_config->argv().c_str()));
self->set("cwd", SrsAmf0Any::str(_srs_config->cwd().c_str())); self->set("cwd", SrsJsonAny::str(_srs_config->cwd().c_str()));
self->set("mem_kbyte", SrsAmf0Any::number(r->r.ru_maxrss)); self->set("mem_kbyte", SrsJsonAny::number(r->r.ru_maxrss));
self->set("mem_percent", SrsAmf0Any::number(self_mem_percent)); self->set("mem_percent", SrsJsonAny::number(self_mem_percent));
self->set("cpu_percent", SrsAmf0Any::number(u->percent)); self->set("cpu_percent", SrsJsonAny::number(u->percent));
self->set("srs_uptime", SrsAmf0Any::number(srs_uptime)); self->set("srs_uptime", SrsJsonAny::number(srs_uptime));
// system // system
SrsAmf0Object* sys = SrsAmf0Any::object(); SrsJsonObject* sys = SrsJsonAny::object();
data->set("system", sys); data->set("system", sys);
sys->set("cpu_percent", SrsAmf0Any::number(s->percent)); sys->set("cpu_percent", SrsJsonAny::number(s->percent));
sys->set("disk_read_KBps", SrsAmf0Any::number(d->in_KBps)); sys->set("disk_read_KBps", SrsJsonAny::number(d->in_KBps));
sys->set("disk_write_KBps", SrsAmf0Any::number(d->out_KBps)); sys->set("disk_write_KBps", SrsJsonAny::number(d->out_KBps));
sys->set("disk_busy_percent", SrsAmf0Any::number(d->busy)); sys->set("disk_busy_percent", SrsJsonAny::number(d->busy));
sys->set("mem_ram_kbyte", SrsAmf0Any::number(m->MemTotal)); sys->set("mem_ram_kbyte", SrsJsonAny::number(m->MemTotal));
sys->set("mem_ram_percent", SrsAmf0Any::number(m->percent_ram)); sys->set("mem_ram_percent", SrsJsonAny::number(m->percent_ram));
sys->set("mem_swap_kbyte", SrsAmf0Any::number(m->SwapTotal)); sys->set("mem_swap_kbyte", SrsJsonAny::number(m->SwapTotal));
sys->set("mem_swap_percent", SrsAmf0Any::number(m->percent_swap)); sys->set("mem_swap_percent", SrsJsonAny::number(m->percent_swap));
sys->set("cpus", SrsAmf0Any::number(c->nb_processors)); sys->set("cpus", SrsJsonAny::number(c->nb_processors));
sys->set("cpus_online", SrsAmf0Any::number(c->nb_processors_online)); sys->set("cpus_online", SrsJsonAny::number(c->nb_processors_online));
sys->set("uptime", SrsAmf0Any::number(p->os_uptime)); sys->set("uptime", SrsJsonAny::number(p->os_uptime));
sys->set("ilde_time", SrsAmf0Any::number(p->os_ilde_time)); sys->set("ilde_time", SrsJsonAny::number(p->os_ilde_time));
sys->set("load_1m", SrsAmf0Any::number(p->load_one_minutes)); sys->set("load_1m", SrsJsonAny::number(p->load_one_minutes));
sys->set("load_5m", SrsAmf0Any::number(p->load_five_minutes)); sys->set("load_5m", SrsJsonAny::number(p->load_five_minutes));
sys->set("load_15m", SrsAmf0Any::number(p->load_fifteen_minutes)); sys->set("load_15m", SrsJsonAny::number(p->load_fifteen_minutes));
// system network bytes stat. // system network bytes stat.
sys->set("net_sample_time", SrsAmf0Any::number(n_sample_time)); sys->set("net_sample_time", SrsJsonAny::number(n_sample_time));
// internet public address network device bytes. // internet public address network device bytes.
sys->set("net_recv_bytes", SrsAmf0Any::number(nr_bytes)); sys->set("net_recv_bytes", SrsJsonAny::number(nr_bytes));
sys->set("net_send_bytes", SrsAmf0Any::number(ns_bytes)); sys->set("net_send_bytes", SrsJsonAny::number(ns_bytes));
// intranet private address network device bytes. // intranet private address network device bytes.
sys->set("net_recvi_bytes", SrsAmf0Any::number(nri_bytes)); sys->set("net_recvi_bytes", SrsJsonAny::number(nri_bytes));
sys->set("net_sendi_bytes", SrsAmf0Any::number(nsi_bytes)); sys->set("net_sendi_bytes", SrsJsonAny::number(nsi_bytes));
// srs network bytes stat. // srs network bytes stat.
sys->set("srs_sample_time", SrsAmf0Any::number(nrs->sample_time)); sys->set("srs_sample_time", SrsJsonAny::number(nrs->sample_time));
sys->set("srs_recv_bytes", SrsAmf0Any::number(nrs->rbytes)); sys->set("srs_recv_bytes", SrsJsonAny::number(nrs->rbytes));
sys->set("srs_send_bytes", SrsAmf0Any::number(nrs->sbytes)); sys->set("srs_send_bytes", SrsJsonAny::number(nrs->sbytes));
sys->set("conn_sys", SrsAmf0Any::number(nrs->nb_conn_sys)); sys->set("conn_sys", SrsJsonAny::number(nrs->nb_conn_sys));
sys->set("conn_sys_et", SrsAmf0Any::number(nrs->nb_conn_sys_et)); sys->set("conn_sys_et", SrsJsonAny::number(nrs->nb_conn_sys_et));
sys->set("conn_sys_tw", SrsAmf0Any::number(nrs->nb_conn_sys_tw)); sys->set("conn_sys_tw", SrsJsonAny::number(nrs->nb_conn_sys_tw));
sys->set("conn_sys_udp", SrsAmf0Any::number(nrs->nb_conn_sys_udp)); sys->set("conn_sys_udp", SrsJsonAny::number(nrs->nb_conn_sys_udp));
sys->set("conn_srs", SrsAmf0Any::number(nrs->nb_conn_srs)); sys->set("conn_srs", SrsJsonAny::number(nrs->nb_conn_srs));
} }
string srs_join_vector_string(vector<string>& vs, string separator) string srs_join_vector_string(vector<string>& vs, string separator)

View file

@ -41,7 +41,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class SrsKbps; class SrsKbps;
class SrsStream; class SrsStream;
class SrsAmf0Object; class SrsJsonObject;
// client open socket and connect to server. // client open socket and connect to server.
extern int srs_socket_connect(std::string server, int port, int64_t timeout, st_netfd_t* pstfd); extern int srs_socket_connect(std::string server, int port, int64_t timeout, st_netfd_t* pstfd);
@ -682,7 +682,7 @@ extern bool srs_is_digit_number(const std::string& str);
extern bool srs_is_boolean(const std::string& str); extern bool srs_is_boolean(const std::string& str);
// dump summaries for /api/v1/summaries. // dump summaries for /api/v1/summaries.
extern void srs_api_dump_summaries(SrsAmf0Object* obj); extern void srs_api_dump_summaries(SrsJsonObject* obj);
// join string in vector with indicated separator // join string in vector with indicated separator
extern std::string srs_join_vector_string(std::vector<std::string>& vs, std::string separator); extern std::string srs_join_vector_string(std::vector<std::string>& vs, std::string separator);

View file

@ -23,10 +23,60 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_protocol_json.hpp> #include <srs_protocol_json.hpp>
#include <sstream>
using namespace std; using namespace std;
#include <srs_kernel_log.hpp> #include <srs_kernel_log.hpp>
/* json encode
cout<< SRS_JOBJECT_START
<< SRS_JFIELD_STR("name", "srs") << SRS_JFIELD_CONT
<< SRS_JFIELD_ORG("version", 100) << SRS_JFIELD_CONT
<< SRS_JFIELD_NAME("features") << SRS_JOBJECT_START
<< SRS_JFIELD_STR("rtmp", "released") << SRS_JFIELD_CONT
<< SRS_JFIELD_STR("hls", "released") << SRS_JFIELD_CONT
<< SRS_JFIELD_STR("dash", "plan")
<< SRS_JOBJECT_END << SRS_JFIELD_CONT
<< SRS_JFIELD_STR("author", "srs team")
<< SRS_JOBJECT_END
it's:
cont<< "{"
<< "name:" << "srs" << ","
<< "version:" << 100 << ","
<< "features:" << "{"
<< "rtmp:" << "released" << ","
<< "hls:" << "released" << ","
<< "dash:" << "plan"
<< "}" << ","
<< "author:" << "srs team"
<< "}"
that is:
"""
{
"name": "srs",
"version": 100,
"features": {
"rtmp": "released",
"hls": "released",
"dash": "plan"
},
"author": "srs team"
}
"""
*/
#define SRS_JOBJECT_START "{"
#define SRS_JFIELD_NAME(k) "\"" << k << "\":"
#define SRS_JFIELD_OBJ(k) SRS_JFIELD_NAME(k) << SRS_JOBJECT_START
#define SRS_JFIELD_STR(k, v) SRS_JFIELD_NAME(k) << "\"" << v << "\""
#define SRS_JFIELD_ORG(k, v) SRS_JFIELD_NAME(k) << std::dec << v
#define SRS_JFIELD_BOOL(k, v) SRS_JFIELD_ORG(k, (v? "true":"false"))
#define SRS_JFIELD_NULL(k) SRS_JFIELD_NAME(k) << "null"
#define SRS_JFIELD_ERROR(ret) "\"" << "code" << "\":" << ret
#define SRS_JFIELD_CONT ","
#define SRS_JOBJECT_END "}"
#define SRS_JARRAY_START "["
#define SRS_JARRAY_END "]"
#ifdef SRS_JSON_USE_NXJSON #ifdef SRS_JSON_USE_NXJSON
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
@ -267,6 +317,46 @@ SrsJsonArray* SrsJsonAny::to_array()
return p; return p;
} }
string SrsJsonAny::to_json()
{
switch (marker) {
case SRS_JSON_String: {
return "\"" + to_str() + "\"";
}
case SRS_JSON_Boolean: {
return to_boolean()? "true":"false";
}
case SRS_JSON_Integer: {
// len(max int64_t) is 20, plus one "+-."
char tmp[22];
snprintf(tmp, 22, "%"PRId64, to_integer());
return tmp;
}
case SRS_JSON_Number: {
// len(max int64_t) is 20, plus one "+-."
char tmp[22];
snprintf(tmp, 22, "%.6f", to_number());
return tmp;
}
case SRS_JSON_Null: {
return "null";
}
case SRS_JSON_Object: {
SrsJsonObject* obj = to_object();
return obj->to_json();
}
case SRS_JSON_Array: {
SrsJsonArray* arr = to_array();
return arr->to_json();
}
default: {
break;
}
}
return "null";
}
SrsJsonAny* SrsJsonAny::str(const char* value) SrsJsonAny* SrsJsonAny::str(const char* value)
{ {
return new SrsJsonString(value); return new SrsJsonString(value);
@ -402,6 +492,27 @@ SrsJsonAny* SrsJsonObject::value_at(int index)
return elem.second; return elem.second;
} }
string SrsJsonObject::to_json()
{
stringstream ss;
ss << SRS_JOBJECT_START;
for (int i = 0; i < (int)properties.size(); i++) {
std::string name = this->key_at(i);
SrsJsonAny* any = this->value_at(i);
ss << SRS_JFIELD_NAME(name) << any->to_json();
if (i < (int)properties.size() - 1) {
ss << SRS_JFIELD_CONT;
}
}
ss << SRS_JOBJECT_END;
return ss.str();
}
void SrsJsonObject::set(string key, SrsJsonAny* value) void SrsJsonObject::set(string key, SrsJsonAny* value)
{ {
if (!value) { if (!value) {
@ -549,6 +660,32 @@ void SrsJsonArray::add(SrsJsonAny* value)
properties.push_back(value); properties.push_back(value);
} }
void SrsJsonArray::append(SrsJsonAny* value)
{
add(value);
}
string SrsJsonArray::to_json()
{
stringstream ss;
ss << SRS_JARRAY_START;
for (int i = 0; i < (int)properties.size(); i++) {
SrsJsonAny* any = properties[i];
ss << any->to_json();
if (i < (int)properties.size() - 1) {
ss << SRS_JFIELD_CONT;
}
}
ss << SRS_JARRAY_END;
return ss.str();
}
#ifdef SRS_JSON_USE_NXJSON #ifdef SRS_JSON_USE_NXJSON
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////

View file

@ -112,6 +112,12 @@ public:
* 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 SrsJsonArray* to_array(); virtual SrsJsonArray* to_array();
// json
public:
/**
* convert the amf0 stuff to json.
*/
virtual std::string to_json();
public: public:
static SrsJsonAny* str(const char* value = NULL); static SrsJsonAny* str(const char* value = NULL);
static SrsJsonAny* boolean(bool value = false); static SrsJsonAny* boolean(bool value = false);
@ -145,6 +151,12 @@ public:
virtual std::string key_at(int index); virtual std::string key_at(int index);
// @remark: max index is count(). // @remark: max index is count().
virtual SrsJsonAny* value_at(int index); virtual SrsJsonAny* value_at(int index);
// json
public:
/**
* convert the amf0 object to json.
*/
virtual std::string to_json();
public: public:
virtual void set(std::string key, SrsJsonAny* value); virtual void set(std::string key, SrsJsonAny* value);
virtual SrsJsonAny* get_property(std::string name); virtual SrsJsonAny* get_property(std::string name);
@ -171,6 +183,14 @@ public:
// @remark: max index is count(). // @remark: max index is count().
virtual SrsJsonAny* at(int index); virtual SrsJsonAny* at(int index);
virtual void add(SrsJsonAny* value); virtual void add(SrsJsonAny* value);
// alias to add.
virtual void append(SrsJsonAny* value);
// json
public:
/**
* convert the amf0 ecma array to json.
*/
virtual std::string to_json();
}; };
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

View file

@ -35,55 +35,6 @@ using namespace std;
using namespace _srs_internal; using namespace _srs_internal;
/* json encode
cout<< SRS_JOBJECT_START
<< SRS_JFIELD_STR("name", "srs") << SRS_JFIELD_CONT
<< SRS_JFIELD_ORG("version", 100) << SRS_JFIELD_CONT
<< SRS_JFIELD_NAME("features") << SRS_JOBJECT_START
<< SRS_JFIELD_STR("rtmp", "released") << SRS_JFIELD_CONT
<< SRS_JFIELD_STR("hls", "released") << SRS_JFIELD_CONT
<< SRS_JFIELD_STR("dash", "plan")
<< SRS_JOBJECT_END << SRS_JFIELD_CONT
<< SRS_JFIELD_STR("author", "srs team")
<< SRS_JOBJECT_END
it's:
cont<< "{"
<< "name:" << "srs" << ","
<< "version:" << 100 << ","
<< "features:" << "{"
<< "rtmp:" << "released" << ","
<< "hls:" << "released" << ","
<< "dash:" << "plan"
<< "}" << ","
<< "author:" << "srs team"
<< "}"
that is:
"""
{
"name": "srs",
"version": 100,
"features": {
"rtmp": "released",
"hls": "released",
"dash": "plan"
},
"author": "srs team"
}
"""
*/
#define SRS_JOBJECT_START "{"
#define SRS_JFIELD_NAME(k) "\"" << k << "\":"
#define SRS_JFIELD_OBJ(k) SRS_JFIELD_NAME(k) << SRS_JOBJECT_START
#define SRS_JFIELD_STR(k, v) SRS_JFIELD_NAME(k) << "\"" << v << "\""
#define SRS_JFIELD_ORG(k, v) SRS_JFIELD_NAME(k) << std::dec << v
#define SRS_JFIELD_BOOL(k, v) SRS_JFIELD_ORG(k, (v? "true":"false"))
#define SRS_JFIELD_NULL(k) SRS_JFIELD_NAME(k) << "null"
#define SRS_JFIELD_ERROR(ret) "\"" << "code" << "\":" << ret
#define SRS_JFIELD_CONT ","
#define SRS_JOBJECT_END "}"
#define SRS_JARRAY_START "["
#define SRS_JARRAY_END "]"
// AMF0 marker // AMF0 marker
#define RTMP_AMF0_Number 0x00 #define RTMP_AMF0_Number 0x00
#define RTMP_AMF0_Boolean 0x01 #define RTMP_AMF0_Boolean 0x01
@ -331,60 +282,6 @@ char* SrsAmf0Any::human_print(char** pdata, int* psize)
return data; return data;
} }
string SrsAmf0Any::to_json()
{
switch (marker) {
case RTMP_AMF0_String: {
return "\"" + to_str() + "\"";
}
case RTMP_AMF0_Boolean: {
return to_boolean()? "true":"false";
}
case RTMP_AMF0_Number: {
double v = to_number();
int64_t iv = (int64_t)v;
// len(max int64_t) is 20, plus one "+-."
char tmp[22];
if (v == iv) {
snprintf(tmp, 22, "%"PRId64, iv);
} else {
snprintf(tmp, 22, "%.6f", to_number());
}
return tmp;
}
case RTMP_AMF0_Null: {
return "null";
}
case RTMP_AMF0_Undefined: {
return "null";
}
case RTMP_AMF0_Object: {
SrsAmf0Object* obj = to_object();
return obj->to_json();
}
case RTMP_AMF0_EcmaArray: {
SrsAmf0EcmaArray* arr = to_ecma_array();
return arr->to_json();
}
case RTMP_AMF0_StrictArray: {
SrsAmf0StrictArray* arr = to_strict_array();
return arr->to_json();
}
case RTMP_AMF0_Date: {
// TODO: FIXME: support amf0 data to json.
return "null";
}
case RTMP_AMF0_Invalid:
default: {
break;
}
}
return "null";
}
SrsAmf0Any* SrsAmf0Any::str(const char* value) SrsAmf0Any* SrsAmf0Any::str(const char* value)
{ {
return new SrsAmf0String(value); return new SrsAmf0String(value);
@ -846,27 +743,6 @@ SrsAmf0Any* SrsAmf0Object::copy()
return copy; return copy;
} }
string SrsAmf0Object::to_json()
{
stringstream ss;
ss << SRS_JOBJECT_START;
for (int i = 0; i < properties->count(); i++) {
std::string name = this->key_at(i);
SrsAmf0Any* any = this->value_at(i);
ss << SRS_JFIELD_NAME(name) << any->to_json();
if (i < properties->count() - 1) {
ss << SRS_JFIELD_CONT;
}
}
ss << SRS_JOBJECT_END;
return ss.str();
}
void SrsAmf0Object::clear() void SrsAmf0Object::clear()
{ {
properties->clear(); properties->clear();
@ -1068,27 +944,6 @@ SrsAmf0Any* SrsAmf0EcmaArray::copy()
return copy; return copy;
} }
string SrsAmf0EcmaArray::to_json()
{
stringstream ss;
ss << SRS_JOBJECT_START;
for (int i = 0; i < properties->count(); i++) {
std::string name = this->key_at(i);
SrsAmf0Any* any = this->value_at(i);
ss << SRS_JFIELD_NAME(name) << any->to_json();
if (i < properties->count() - 1) {
ss << SRS_JFIELD_CONT;
}
}
ss << SRS_JOBJECT_END;
return ss.str();
}
void SrsAmf0EcmaArray::clear() void SrsAmf0EcmaArray::clear()
{ {
properties->clear(); properties->clear();
@ -1264,27 +1119,6 @@ SrsAmf0Any* SrsAmf0StrictArray::copy()
return copy; return copy;
} }
string SrsAmf0StrictArray::to_json()
{
stringstream ss;
ss << SRS_JARRAY_START;
for (int i = 0; i < (int)properties.size(); i++) {
SrsAmf0Any* any = properties[i];
ss << any->to_json();
if (i < (int)properties.size() - 1) {
ss << SRS_JFIELD_CONT;
}
}
ss << SRS_JARRAY_END;
return ss.str();
}
void SrsAmf0StrictArray::clear() void SrsAmf0StrictArray::clear()
{ {
properties.clear(); properties.clear();

View file

@ -272,12 +272,6 @@ public:
* @remark user must free the data returned or output by pdata. * @remark user must free the data returned or output by pdata.
*/ */
virtual char* human_print(char** pdata, int* psize); virtual char* human_print(char** pdata, int* psize);
// json
public:
/**
* convert the amf0 stuff to json.
*/
virtual std::string to_json();
// create AMF0 instance. // create AMF0 instance.
public: public:
/** /**
@ -357,12 +351,6 @@ public:
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
virtual SrsAmf0Any* copy(); virtual SrsAmf0Any* copy();
// json
public:
/**
* convert the amf0 object to json.
*/
virtual std::string to_json();
// properties iteration // properties iteration
public: public:
/** /**
@ -446,12 +434,6 @@ public:
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
virtual SrsAmf0Any* copy(); virtual SrsAmf0Any* copy();
// json
public:
/**
* convert the amf0 ecma array to json.
*/
virtual std::string to_json();
// properties iteration // properties iteration
public: public:
/** /**
@ -533,12 +515,6 @@ public:
virtual int read(SrsStream* stream); virtual int read(SrsStream* stream);
virtual int write(SrsStream* stream); virtual int write(SrsStream* stream);
virtual SrsAmf0Any* copy(); virtual SrsAmf0Any* copy();
// json
public:
/**
* convert the amf0 strict array to json.
*/
virtual std::string to_json();
// properties iteration // properties iteration
public: public:
/** /**