Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-09-19 12:27:31 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
3f7e69b6170b7342f50ca7853f365173d2654a36
3f7e69b6
1 parent
b7878170
json objects support dumps to string.
显示空白字符变更
内嵌
并排对比
正在显示
14 个修改的文件
包含
731 行增加
和
763 行删除
README.md
trunk/src/app/srs_app_config.cpp
trunk/src/app/srs_app_config.hpp
trunk/src/app/srs_app_heartbeat.cpp
trunk/src/app/srs_app_http_api.cpp
trunk/src/app/srs_app_http_hooks.cpp
trunk/src/app/srs_app_statistic.cpp
trunk/src/app/srs_app_statistic.hpp
trunk/src/app/srs_app_utility.cpp
trunk/src/app/srs_app_utility.hpp
trunk/src/protocol/srs_protocol_json.cpp
trunk/src/protocol/srs_protocol_json.hpp
trunk/src/protocol/srs_rtmp_amf0.cpp
trunk/src/protocol/srs_rtmp_amf0.hpp
README.md
查看文件 @
3f7e69b
...
...
@@ -344,6 +344,7 @@ Remark:
## 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
]
, 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
...
...
trunk/src/app/srs_app_config.cpp
查看文件 @
3f7e69b
...
...
@@ -75,7 +75,7 @@ using namespace _srs_internal;
* @param dir the transcode or ingest config directive.
* @param engine the amf0 object to dumps to.
*/
int
srs_config_dumps_engine
(
SrsConfDirective
*
dir
,
Srs
Amf0
Object
*
engine
);
int
srs_config_dumps_engine
(
SrsConfDirective
*
dir
,
Srs
Json
Object
*
engine
);
/**
* whether the two vector actual equals, for instance,
...
...
@@ -511,21 +511,21 @@ int srs_config_transform_vhost(SrsConfDirective* root)
return
ret
;
}
int
srs_config_dumps_engine
(
SrsConfDirective
*
dir
,
Srs
Amf0
Object
*
engine
)
int
srs_config_dumps_engine
(
SrsConfDirective
*
dir
,
Srs
Json
Object
*
engine
)
{
int
ret
=
ERROR_SUCCESS
;
SrsConfDirective
*
conf
=
NULL
;
engine
->
set
(
"id"
,
dir
->
dumps_arg0_to_str
());
engine
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
_srs_config
->
get_engine_enabled
(
dir
)));
engine
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
_srs_config
->
get_engine_enabled
(
dir
)));
if
((
conf
=
dir
->
get
(
"iformat"
))
!=
NULL
)
{
engine
->
set
(
"iformat"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"vfilter"
))
!=
NULL
)
{
Srs
Amf0Object
*
vfilter
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
vfilter
=
SrsJson
Any
::
object
();
engine
->
set
(
"vfilter"
,
vfilter
);
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
)
{
Srs
Amf0Object
*
vparams
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
vparams
=
SrsJson
Any
::
object
();
engine
->
set
(
"vparams"
,
vparams
);
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
)
{
Srs
Amf0Object
*
aparams
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
aparams
=
SrsJson
Any
::
object
();
engine
->
set
(
"aparams"
,
aparams
);
for
(
int
i
=
0
;
i
<
(
int
)
conf
->
directives
.
size
();
i
++
)
{
...
...
@@ -868,29 +868,29 @@ int SrsConfDirective::persistence(SrsFileWriter* writer, int level)
return
ret
;
}
Srs
Amf0Strict
Array
*
SrsConfDirective
::
dumps_args
()
Srs
Json
Array
*
SrsConfDirective
::
dumps_args
()
{
Srs
Amf0StrictArray
*
arr
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
arr
=
SrsJsonAny
::
array
();
for
(
int
i
=
0
;
i
<
(
int
)
args
.
size
();
i
++
)
{
string
arg
=
args
.
at
(
i
);
arr
->
append
(
Srs
Amf0
Any
::
str
(
arg
.
c_str
()));
arr
->
append
(
Srs
Json
Any
::
str
(
arg
.
c_str
()));
}
return
arr
;
}
Srs
Amf0
Any
*
SrsConfDirective
::
dumps_arg0_to_str
()
Srs
Json
Any
*
SrsConfDirective
::
dumps_arg0_to_str
()
{
return
Srs
Amf0
Any
::
str
(
arg0
().
c_str
());
return
Srs
Json
Any
::
str
(
arg0
().
c_str
());
}
Srs
Amf0
Any
*
SrsConfDirective
::
dumps_arg0_to_number
()
Srs
Json
Any
*
SrsConfDirective
::
dumps_arg0_to_number
()
{
return
Srs
Amf0
Any
::
number
(
::
atof
(
arg0
().
c_str
()));
return
Srs
Json
Any
::
number
(
::
atof
(
arg0
().
c_str
()));
}
Srs
Amf0
Any
*
SrsConfDirective
::
dumps_arg0_to_boolean
()
Srs
Json
Any
*
SrsConfDirective
::
dumps_arg0_to_boolean
()
{
return
Srs
Amf0
Any
::
boolean
(
arg0
()
==
"on"
);
return
Srs
Json
Any
::
boolean
(
arg0
()
==
"on"
);
}
// see: ngx_conf_parse
...
...
@@ -1994,7 +1994,7 @@ int SrsConfig::persistence()
return
ret
;
}
int
SrsConfig
::
minimal_to_json
(
Srs
Amf0
Object
*
obj
)
int
SrsConfig
::
minimal_to_json
(
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -2012,7 +2012,7 @@ int SrsConfig::minimal_to_json(SrsAmf0Object* obj)
return
ret
;
}
int
SrsConfig
::
global_to_json
(
Srs
Amf0
Object
*
obj
)
int
SrsConfig
::
global_to_json
(
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -2045,7 +2045,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
else
if
(
dir
->
name
==
"pithy_print_ms"
)
{
obj
->
set
(
dir
->
name
,
dir
->
dumps_arg0_to_number
());
}
else
if
(
dir
->
name
==
"heartbeat"
)
{
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"enabled"
)
{
...
...
@@ -2062,7 +2062,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
obj
->
set
(
dir
->
name
,
sobj
);
}
else
if
(
dir
->
name
==
"stats"
)
{
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"network"
)
{
...
...
@@ -2073,7 +2073,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
obj
->
set
(
dir
->
name
,
sobj
);
}
else
if
(
dir
->
name
==
"http_api"
)
{
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"enabled"
)
{
...
...
@@ -2083,7 +2083,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
else
if
(
sdir
->
name
==
"crossdomain"
)
{
sobj
->
set
(
sdir
->
name
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"raw_api"
)
{
Srs
Amf0Object
*
ssobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
ssobj
=
SrsJson
Any
::
object
();
sobj
->
set
(
sdir
->
name
,
ssobj
);
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
);
}
else
if
(
dir
->
name
==
"http_server"
)
{
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"enabled"
)
{
...
...
@@ -2115,7 +2115,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
obj
->
set
(
dir
->
name
,
sobj
);
}
else
if
(
dir
->
name
==
"stream_caster"
)
{
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"enabled"
)
{
...
...
@@ -2138,7 +2138,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
}
Srs
Amf0Object
*
sobjs
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobjs
=
SrsJson
Any
::
object
();
int
nb_vhosts
=
0
;
SrsStatistic
*
stat
=
SrsStatistic
::
instance
();
...
...
@@ -2149,73 +2149,73 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
nb_vhosts
++
;
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
sobjs
->
set
(
dir
->
arg0
(),
sobj
);
SrsStatisticVhost
*
svhost
=
stat
->
find_vhost
(
dir
->
arg0
());
sobj
->
set
(
"id"
,
Srs
Amf0
Any
::
number
(
svhost
?
(
double
)
svhost
->
id
:
0
));
sobj
->
set
(
"id"
,
Srs
Json
Any
::
number
(
svhost
?
(
double
)
svhost
->
id
:
0
));
sobj
->
set
(
"name"
,
dir
->
dumps_arg0_to_str
());
sobj
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_vhost_enabled
(
dir
->
arg0
())));
sobj
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_vhost_enabled
(
dir
->
arg0
())));
if
(
get_dvr_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"dvr"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"dvr"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_vhost_http_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"http_static"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"http_static"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_vhost_http_remux_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"http_remux"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"http_remux"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_hls_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"hls"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"hls"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_hds_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"hds"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"hds"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_vhost_http_hooks
(
dir
->
arg0
()))
{
sobj
->
set
(
"http_hooks"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"http_hooks"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_exec_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"exec"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"exec"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_bw_check_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"bandcheck"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"bandcheck"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
!
get_vhost_is_edge
(
dir
->
arg0
()))
{
sobj
->
set
(
"origin"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"origin"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_forward_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"forward"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"forward"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_security_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"security"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"security"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_refer_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"refer"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"refer"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_mr_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"mr"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"mr"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_realtime_enabled
(
dir
->
arg0
()))
{
sobj
->
set
(
"min_latency"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"min_latency"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_gop_cache
(
dir
->
arg0
()))
{
sobj
->
set
(
"gop_cache"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"gop_cache"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_tcp_nodelay
(
dir
->
arg0
()))
{
sobj
->
set
(
"tcp_nodelay"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"tcp_nodelay"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_mix_correct
(
dir
->
arg0
()))
{
sobj
->
set
(
"mix_correct"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"mix_correct"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_time_jitter
(
dir
->
arg0
())
!=
SrsRtmpJitterAlgorithmOFF
)
{
sobj
->
set
(
"time_jitter"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"time_jitter"
,
Srs
Json
Any
::
boolean
(
true
));
}
if
(
get_atc
(
dir
->
arg0
()))
{
sobj
->
set
(
"atc"
,
Srs
Amf0
Any
::
boolean
(
true
));
sobj
->
set
(
"atc"
,
Srs
Json
Any
::
boolean
(
true
));
}
bool
has_transcode
=
false
;
...
...
@@ -2242,7 +2242,7 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
}
if
(
has_transcode
)
{
sobj
->
set
(
"transcode"
,
Srs
Amf0
Any
::
boolean
(
has_transcode
));
sobj
->
set
(
"transcode"
,
Srs
Json
Any
::
boolean
(
has_transcode
));
}
bool
has_ingest
=
false
;
...
...
@@ -2258,17 +2258,17 @@ int SrsConfig::global_to_json(SrsAmf0Object* obj)
}
}
if
(
has_ingest
)
{
sobj
->
set
(
"ingest"
,
Srs
Amf0
Any
::
boolean
(
has_ingest
));
sobj
->
set
(
"ingest"
,
Srs
Json
Any
::
boolean
(
has_ingest
));
}
}
obj
->
set
(
"nb_vhosts"
,
Srs
Amf0
Any
::
number
(
nb_vhosts
));
obj
->
set
(
"nb_vhosts"
,
Srs
Json
Any
::
number
(
nb_vhosts
));
obj
->
set
(
"vhosts"
,
sobjs
);
return
ret
;
}
int
SrsConfig
::
vhost_to_json
(
SrsConfDirective
*
vhost
,
Srs
Amf0
Object
*
obj
)
int
SrsConfig
::
vhost_to_json
(
SrsConfDirective
*
vhost
,
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -2278,10 +2278,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
SrsStatistic
*
stat
=
SrsStatistic
::
instance
();
SrsStatisticVhost
*
svhost
=
stat
->
find_vhost
(
vhost
->
arg0
());
obj
->
set
(
"id"
,
Srs
Amf0
Any
::
number
(
svhost
?
(
double
)
svhost
->
id
:
0
));
obj
->
set
(
"id"
,
Srs
Json
Any
::
number
(
svhost
?
(
double
)
svhost
->
id
:
0
));
obj
->
set
(
"name"
,
vhost
->
dumps_arg0_to_str
());
obj
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_vhost_enabled
(
vhost
)));
obj
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_vhost_enabled
(
vhost
)));
// vhost scope configs.
if
((
dir
=
vhost
->
get
(
"chunk_size"
))
!=
NULL
)
{
...
...
@@ -2296,7 +2296,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// cluster.
if
((
dir
=
vhost
->
get
(
"cluster"
))
!=
NULL
)
{
Srs
Amf0Object
*
cluster
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
cluster
=
SrsJson
Any
::
object
();
obj
->
set
(
"cluster"
,
cluster
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
...
...
@@ -2318,10 +2318,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// forward
if
((
dir
=
vhost
->
get
(
"forward"
))
!=
NULL
)
{
Srs
Amf0Object
*
forward
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
forward
=
SrsJson
Any
::
object
();
obj
->
set
(
"forward"
,
forward
);
forward
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_forward_enabled
(
vhost
->
name
)));
forward
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_forward_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2334,7 +2334,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// play
if
((
dir
=
vhost
->
get
(
"play"
))
!=
NULL
)
{
Srs
Amf0Object
*
play
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
play
=
SrsJson
Any
::
object
();
obj
->
set
(
"play"
,
play
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
...
...
@@ -2364,7 +2364,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// publish
if
((
dir
=
vhost
->
get
(
"publish"
))
!=
NULL
)
{
Srs
Amf0Object
*
publish
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
publish
=
SrsJson
Any
::
object
();
obj
->
set
(
"publish"
,
publish
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
...
...
@@ -2384,10 +2384,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// refer
if
((
dir
=
vhost
->
get
(
"refer"
))
!=
NULL
)
{
Srs
Amf0Object
*
refer
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
refer
=
SrsJson
Any
::
object
();
obj
->
set
(
"refer"
,
refer
);
refer
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_refer_enabled
(
vhost
->
name
)));
refer
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_refer_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2404,10 +2404,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// bandcheck
if
((
dir
=
vhost
->
get
(
"bandcheck"
))
!=
NULL
)
{
Srs
Amf0Object
*
bandcheck
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
bandcheck
=
SrsJson
Any
::
object
();
obj
->
set
(
"bandcheck"
,
bandcheck
);
bandcheck
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_bw_check_enabled
(
vhost
->
name
)));
bandcheck
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_bw_check_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2424,31 +2424,31 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// security
if
((
dir
=
vhost
->
get
(
"security"
))
!=
NULL
)
{
Srs
Amf0Object
*
security
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
security
=
SrsJson
Any
::
object
();
obj
->
set
(
"security"
,
security
);
security
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_security_enabled
(
vhost
->
name
)));
security
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_security_enabled
(
vhost
->
name
)));
Srs
Amf0StrictArray
*
allows
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
allows
=
SrsJsonAny
::
array
();
security
->
set
(
"allows"
,
allows
);
Srs
Amf0StrictArray
*
denies
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
denies
=
SrsJsonAny
::
array
();
security
->
set
(
"denies"
,
denies
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
if
(
sdir
->
name
==
"allow"
)
{
SrsAmf0Object
*
allow
=
SrsAmf0Any
::
object
();
allow
->
set
(
"action"
,
SrsAmf0Any
::
str
(
sdir
->
name
.
c_str
()));
allow
->
set
(
"method"
,
SrsAmf0Any
::
str
(
sdir
->
arg0
().
c_str
()));
allow
->
set
(
"entry"
,
SrsAmf0Any
::
str
(
sdir
->
arg1
().
c_str
()));
SrsJsonObject
*
allow
=
SrsJsonAny
::
object
();
allow
->
set
(
"action"
,
SrsJsonAny
::
str
(
sdir
->
name
.
c_str
()));
allow
->
set
(
"method"
,
SrsJsonAny
::
str
(
sdir
->
arg0
().
c_str
()));
allow
->
set
(
"entry"
,
SrsJsonAny
::
str
(
sdir
->
arg1
().
c_str
()));
allows
->
append
(
allow
);
}
else
if
(
sdir
->
name
==
"deny"
)
{
SrsAmf0Object
*
deny
=
SrsAmf0Any
::
object
();
deny
->
set
(
"action"
,
SrsAmf0Any
::
str
(
sdir
->
name
.
c_str
()));
deny
->
set
(
"method"
,
SrsAmf0Any
::
str
(
sdir
->
arg0
().
c_str
()));
deny
->
set
(
"entry"
,
SrsAmf0Any
::
str
(
sdir
->
arg1
().
c_str
()));
SrsJsonObject
*
deny
=
SrsJsonAny
::
object
();
deny
->
set
(
"action"
,
SrsJsonAny
::
str
(
sdir
->
name
.
c_str
()));
deny
->
set
(
"method"
,
SrsJsonAny
::
str
(
sdir
->
arg0
().
c_str
()));
deny
->
set
(
"entry"
,
SrsJsonAny
::
str
(
sdir
->
arg1
().
c_str
()));
denies
->
append
(
deny
);
}
}
...
...
@@ -2456,10 +2456,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// http_static
if
((
dir
=
vhost
->
get
(
"http_static"
))
!=
NULL
)
{
Srs
Amf0Object
*
http_static
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
http_static
=
SrsJson
Any
::
object
();
obj
->
set
(
"http_static"
,
http_static
);
http_static
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_vhost_http_enabled
(
vhost
->
name
)));
http_static
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_vhost_http_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2474,10 +2474,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// http_remux
if
((
dir
=
vhost
->
get
(
"http_remux"
))
!=
NULL
)
{
Srs
Amf0Object
*
http_remux
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
http_remux
=
SrsJson
Any
::
object
();
obj
->
set
(
"http_remux"
,
http_remux
);
http_remux
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_vhost_http_remux_enabled
(
vhost
->
name
)));
http_remux
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_vhost_http_remux_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2494,10 +2494,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// http_hooks
if
((
dir
=
vhost
->
get
(
"http_hooks"
))
!=
NULL
)
{
Srs
Amf0Object
*
http_hooks
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
http_hooks
=
SrsJson
Any
::
object
();
obj
->
set
(
"http_hooks"
,
http_hooks
);
http_hooks
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_vhost_http_hooks_enabled
(
vhost
->
name
)));
http_hooks
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_vhost_http_hooks_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2526,10 +2526,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// hls
if
((
dir
=
vhost
->
get
(
"hls"
))
!=
NULL
)
{
Srs
Amf0Object
*
hls
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
hls
=
SrsJson
Any
::
object
();
obj
->
set
(
"hls"
,
hls
);
hls
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_hls_enabled
(
vhost
->
name
)));
hls
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_hls_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2576,10 +2576,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// hds
if
((
dir
=
vhost
->
get
(
"hds"
))
!=
NULL
)
{
Srs
Amf0Object
*
hds
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
hds
=
SrsJson
Any
::
object
();
obj
->
set
(
"hds"
,
hds
);
hds
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_hds_enabled
(
vhost
->
name
)));
hds
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_hds_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2596,10 +2596,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// dvr
if
((
dir
=
vhost
->
get
(
"dvr"
))
!=
NULL
)
{
Srs
Amf0Object
*
dvr
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
dvr
=
SrsJson
Any
::
object
();
obj
->
set
(
"dvr"
,
dvr
);
dvr
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_dvr_enabled
(
vhost
->
name
)));
dvr
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_dvr_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2622,10 +2622,10 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
// exec
if
((
dir
=
vhost
->
get
(
"exec"
))
!=
NULL
)
{
Srs
Amf0Object
*
ng_exec
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
ng_exec
=
SrsJson
Any
::
object
();
obj
->
set
(
"exec"
,
ng_exec
);
ng_exec
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_exec_enabled
(
vhost
->
name
)));
ng_exec
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_exec_enabled
(
vhost
->
name
)));
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
...
...
@@ -2637,7 +2637,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
}
// ingest
Srs
Amf0Strict
Array
*
ingests
=
NULL
;
Srs
Json
Array
*
ingests
=
NULL
;
for
(
int
i
=
0
;
i
<
(
int
)
vhost
->
directives
.
size
();
i
++
)
{
dir
=
vhost
->
directives
.
at
(
i
);
if
(
dir
->
name
!=
"ingest"
)
{
...
...
@@ -2645,20 +2645,20 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
}
if
(
!
ingests
)
{
ingests
=
Srs
Amf0Any
::
strict_
array
();
ingests
=
Srs
JsonAny
::
array
();
obj
->
set
(
"ingests"
,
ingests
);
}
Srs
Amf0Object
*
ingest
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
ingest
=
SrsJson
Any
::
object
();
ingest
->
set
(
"id"
,
dir
->
dumps_arg0_to_str
());
ingest
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_ingest_enabled
(
dir
)));
ingest
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_ingest_enabled
(
dir
)));
ingests
->
append
(
ingest
);
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"input"
)
{
Srs
Amf0Object
*
input
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
input
=
SrsJson
Any
::
object
();
ingest
->
set
(
"input"
,
input
);
SrsConfDirective
*
type
=
sdir
->
get
(
"type"
);
...
...
@@ -2673,7 +2673,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
}
else
if
(
sdir
->
name
==
"ffmpeg"
)
{
ingest
->
set
(
"ffmpeg"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"engine"
)
{
Srs
Amf0Object
*
engine
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
engine
=
SrsJson
Any
::
object
();
ingest
->
set
(
"engine"
,
engine
);
if
((
ret
=
srs_config_dumps_engine
(
sdir
,
engine
))
!=
ERROR_SUCCESS
)
{
...
...
@@ -2684,7 +2684,7 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
}
// transcode
Srs
Amf0Strict
Array
*
transcodes
=
NULL
;
Srs
Json
Array
*
transcodes
=
NULL
;
for
(
int
i
=
0
;
i
<
(
int
)
vhost
->
directives
.
size
();
i
++
)
{
dir
=
vhost
->
directives
.
at
(
i
);
if
(
dir
->
name
!=
"transcode"
)
{
...
...
@@ -2692,17 +2692,17 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
}
if
(
!
transcodes
)
{
transcodes
=
Srs
Amf0Any
::
strict_
array
();
transcodes
=
Srs
JsonAny
::
array
();
obj
->
set
(
"transcodes"
,
transcodes
);
}
Srs
Amf0Object
*
transcode
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
transcode
=
SrsJson
Any
::
object
();
transcodes
->
append
(
transcode
);
transcode
->
set
(
"apply"
,
dir
->
dumps_arg0_to_str
());
transcode
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
get_transcode_enabled
(
dir
)));
transcode
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
get_transcode_enabled
(
dir
)));
Srs
Amf0StrictArray
*
engines
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
engines
=
SrsJsonAny
::
array
();
transcode
->
set
(
"engines"
,
engines
);
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"
)
{
transcode
->
set
(
"ffmpeg"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"engine"
)
{
Srs
Amf0Object
*
engine
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
engine
=
SrsJson
Any
::
object
();
engines
->
append
(
engine
);
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
;
}
int
SrsConfig
::
raw_to_json
(
Srs
Amf0
Object
*
obj
)
int
SrsConfig
::
raw_to_json
(
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
Srs
Amf0Object
*
sobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sobj
=
SrsJson
Any
::
object
();
obj
->
set
(
"http_api"
,
sobj
);
sobj
->
set
(
"enabled"
,
SrsAmf0Any
::
boolean
(
get_http_api_enabled
()));
sobj
->
set
(
"listen"
,
SrsAmf0Any
::
str
(
get_http_api_listen
().
c_str
()));
sobj
->
set
(
"crossdomain"
,
SrsAmf0Any
::
boolean
(
get_http_api_crossdomain
()));
sobj
->
set
(
"enabled"
,
SrsJsonAny
::
boolean
(
get_http_api_enabled
()));
sobj
->
set
(
"listen"
,
SrsJsonAny
::
str
(
get_http_api_listen
().
c_str
()));
sobj
->
set
(
"crossdomain"
,
SrsJsonAny
::
boolean
(
get_http_api_crossdomain
()));
Srs
Amf0Object
*
ssobj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
ssobj
=
SrsJson
Any
::
object
();
sobj
->
set
(
"raw_api"
,
ssobj
);
ssobj
->
set
(
"enabled"
,
SrsAmf0Any
::
boolean
(
get_raw_api
()));
ssobj
->
set
(
"allow_reload"
,
SrsAmf0Any
::
boolean
(
get_raw_api_allow_reload
()));
ssobj
->
set
(
"allow_query"
,
SrsAmf0Any
::
boolean
(
get_raw_api_allow_query
()));
ssobj
->
set
(
"allow_update"
,
SrsAmf0Any
::
boolean
(
get_raw_api_allow_update
()));
ssobj
->
set
(
"enabled"
,
SrsJsonAny
::
boolean
(
get_raw_api
()));
ssobj
->
set
(
"allow_reload"
,
SrsJsonAny
::
boolean
(
get_raw_api_allow_reload
()));
ssobj
->
set
(
"allow_query"
,
SrsJsonAny
::
boolean
(
get_raw_api_allow_query
()));
ssobj
->
set
(
"allow_update"
,
SrsJsonAny
::
boolean
(
get_raw_api_allow_update
()));
return
ret
;
}
...
...
trunk/src/app/srs_app_config.hpp
查看文件 @
3f7e69b
...
...
@@ -40,9 +40,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class
SrsRequest
;
class
SrsFileWriter
;
class
SrsAmf0Object
;
class
SrsAmf0StrictArray
;
class
SrsAmf0Any
;
class
SrsJsonObject
;
class
SrsJsonArray
;
class
SrsJsonAny
;
class
SrsConfig
;
class
SrsRequest
;
...
...
@@ -250,13 +250,13 @@ public:
/**
* dumps the args[0-N] to array(string).
*/
virtual
Srs
Amf0Strict
Array
*
dumps_args
();
virtual
Srs
Json
Array
*
dumps_args
();
/**
* dumps arg0 to str, number or boolean.
*/
virtual
SrsAmf0Any
*
dumps_arg0_to_str
();
virtual
SrsAmf0Any
*
dumps_arg0_to_number
();
virtual
SrsAmf0Any
*
dumps_arg0_to_boolean
();
virtual
SrsJsonAny
*
dumps_arg0_to_str
();
virtual
SrsJsonAny
*
dumps_arg0_to_number
();
virtual
SrsJsonAny
*
dumps_arg0_to_boolean
();
// private parse.
private:
/**
...
...
@@ -416,19 +416,19 @@ public:
/**
* dumps the global sections to json.
*/
virtual
int
global_to_json
(
Srs
Amf0
Object
*
obj
);
virtual
int
global_to_json
(
Srs
Json
Object
*
obj
);
/**
* dumps the minimal sections to json.
*/
virtual
int
minimal_to_json
(
Srs
Amf0
Object
*
obj
);
virtual
int
minimal_to_json
(
Srs
Json
Object
*
obj
);
/**
* dumps the vhost section to json.
*/
virtual
int
vhost_to_json
(
SrsConfDirective
*
vhost
,
Srs
Amf0
Object
*
obj
);
virtual
int
vhost_to_json
(
SrsConfDirective
*
vhost
,
Srs
Json
Object
*
obj
);
/**
* dumps the http_api sections to json for raw api info.
*/
virtual
int
raw_to_json
(
Srs
Amf0
Object
*
obj
);
virtual
int
raw_to_json
(
Srs
Json
Object
*
obj
);
/**
* raw set the global listen.
*/
...
...
trunk/src/app/srs_app_heartbeat.cpp
查看文件 @
3f7e69b
...
...
@@ -66,14 +66,14 @@ void SrsHttpHeartbeat::heartbeat()
ip
=
ips
[
_srs_config
->
get_stats_network
()
%
(
int
)
ips
.
size
()];
}
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"device_id"
,
SrsAmf0Any
::
str
(
device_id
.
c_str
()));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
ip
.
c_str
()));
obj
->
set
(
"device_id"
,
SrsJsonAny
::
str
(
device_id
.
c_str
()));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
ip
.
c_str
()));
if
(
_srs_config
->
get_heartbeat_summaries
())
{
Srs
Amf0Object
*
summaries
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
summaries
=
SrsJson
Any
::
object
();
obj
->
set
(
"summaries"
,
summaries
);
srs_api_dump_summaries
(
summaries
);
...
...
trunk/src/app/srs_app_http_api.cpp
查看文件 @
3f7e69b
...
...
@@ -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
)
{
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
Srs
Amf0Any
::
numb
er
(
code
));
obj
->
set
(
"code"
,
Srs
JsonAny
::
inget
er
(
code
));
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
)
{
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
Srs
Amf0Any
::
numb
er
(
code
));
obj
->
set
(
"code"
,
Srs
JsonAny
::
inget
er
(
code
));
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
urls
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
urls
=
SrsJson
Any
::
object
();
obj
->
set
(
"urls"
,
urls
);
urls
->
set
(
"api"
,
Srs
Amf0
Any
::
str
(
"the api root"
));
urls
->
set
(
"api"
,
Srs
Json
Any
::
str
(
"the api root"
));
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
urls
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
urls
=
SrsJson
Any
::
object
();
obj
->
set
(
"urls"
,
urls
);
urls
->
set
(
"v1"
,
Srs
Amf0
Any
::
str
(
"the api version 1.0"
));
urls
->
set
(
"v1"
,
Srs
Json
Any
::
str
(
"the api version 1.0"
));
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
urls
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
urls
=
SrsJson
Any
::
object
();
obj
->
set
(
"urls"
,
urls
);
urls
->
set
(
"versions"
,
SrsAmf0Any
::
str
(
"the version of SRS"
));
urls
->
set
(
"summaries"
,
SrsAmf0Any
::
str
(
"the summary(pid, argv, pwd, cpu, mem) of SRS"
));
urls
->
set
(
"rusages"
,
SrsAmf0Any
::
str
(
"the rusage of SRS"
));
urls
->
set
(
"self_proc_stats"
,
SrsAmf0Any
::
str
(
"the self process stats"
));
urls
->
set
(
"system_proc_stats"
,
SrsAmf0Any
::
str
(
"the system process stats"
));
urls
->
set
(
"meminfos"
,
SrsAmf0Any
::
str
(
"the meminfo of system"
));
urls
->
set
(
"authors"
,
SrsAmf0Any
::
str
(
"the license, copyright, authors and contributors"
));
urls
->
set
(
"features"
,
SrsAmf0Any
::
str
(
"the supported features of SRS"
));
urls
->
set
(
"requests"
,
SrsAmf0Any
::
str
(
"the request itself, for http debug"
));
urls
->
set
(
"vhosts"
,
SrsAmf0Any
::
str
(
"manage all vhosts or specified vhost"
));
urls
->
set
(
"streams"
,
SrsAmf0Any
::
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
(
"raw"
,
SrsAmf0Any
::
str
(
"raw api for srs, support CUID srs for instance the config"
));
SrsAmf0Object
*
tests
=
SrsAmf0Any
::
object
();
urls
->
set
(
"versions"
,
SrsJsonAny
::
str
(
"the version of SRS"
));
urls
->
set
(
"summaries"
,
SrsJsonAny
::
str
(
"the summary(pid, argv, pwd, cpu, mem) of SRS"
));
urls
->
set
(
"rusages"
,
SrsJsonAny
::
str
(
"the rusage of SRS"
));
urls
->
set
(
"self_proc_stats"
,
SrsJsonAny
::
str
(
"the self process stats"
));
urls
->
set
(
"system_proc_stats"
,
SrsJsonAny
::
str
(
"the system process stats"
));
urls
->
set
(
"meminfos"
,
SrsJsonAny
::
str
(
"the meminfo of system"
));
urls
->
set
(
"authors"
,
SrsJsonAny
::
str
(
"the license, copyright, authors and contributors"
));
urls
->
set
(
"features"
,
SrsJsonAny
::
str
(
"the supported features of SRS"
));
urls
->
set
(
"requests"
,
SrsJsonAny
::
str
(
"the request itself, for http debug"
));
urls
->
set
(
"vhosts"
,
SrsJsonAny
::
str
(
"manage all vhosts or specified vhost"
));
urls
->
set
(
"streams"
,
SrsJsonAny
::
str
(
"manage all streams or specified stream"
));
urls
->
set
(
"clients"
,
SrsJsonAny
::
str
(
"manage all clients or specified client, default query top 10 clients"
));
urls
->
set
(
"raw"
,
SrsJsonAny
::
str
(
"raw api for srs, support CUID srs for instance the config"
));
SrsJsonObject
*
tests
=
SrsJsonAny
::
object
();
obj
->
set
(
"tests"
,
tests
);
tests
->
set
(
"requests"
,
SrsAmf0Any
::
str
(
"show the request info"
));
tests
->
set
(
"errors"
,
SrsAmf0Any
::
str
(
"always return an error 100"
));
tests
->
set
(
"redirects"
,
SrsAmf0Any
::
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
(
"requests"
,
SrsJsonAny
::
str
(
"show the request info"
));
tests
->
set
(
"errors"
,
SrsJsonAny
::
str
(
"always return an error 100"
));
tests
->
set
(
"redirects"
,
SrsJsonAny
::
str
(
"always redirect to /api/v1/test/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
());
}
...
...
@@ -240,19 +240,19 @@ int SrsGoApiVersion::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{
SrsStatistic
*
stat
=
SrsStatistic
::
instance
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
data
->
set
(
"major"
,
SrsAmf0Any
::
number
(
VERSION_MAJOR
));
data
->
set
(
"minor"
,
SrsAmf0Any
::
number
(
VERSION_MINOR
));
data
->
set
(
"revision"
,
SrsAmf0Any
::
number
(
VERSION_REVISION
));
data
->
set
(
"version"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_VERSION
));
data
->
set
(
"major"
,
SrsJsonAny
::
number
(
VERSION_MAJOR
));
data
->
set
(
"minor"
,
SrsJsonAny
::
number
(
VERSION_MINOR
));
data
->
set
(
"revision"
,
SrsJsonAny
::
number
(
VERSION_REVISION
));
data
->
set
(
"version"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_VERSION
));
return
srs_api_response
(
w
,
r
,
obj
->
to_json
());
}
...
...
@@ -267,8 +267,8 @@ SrsGoApiSummaries::~SrsGoApiSummaries()
int
SrsGoApiSummaries
::
serve_http
(
ISrsHttpResponseWriter
*
w
,
ISrsHttpMessage
*
r
)
{
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
srs_api_dump_summaries
(
obj
);
...
...
@@ -287,35 +287,35 @@ int SrsGoApiRusages::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{
SrsStatistic
*
stat
=
SrsStatistic
::
instance
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
SrsRusage
*
ru
=
srs_get_system_rusage
();
data
->
set
(
"ok"
,
SrsAmf0Any
::
boolean
(
ru
->
ok
));
data
->
set
(
"sample_time"
,
SrsAmf0Any
::
number
(
ru
->
sample_time
));
data
->
set
(
"ru_utime"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_utime
.
tv_sec
));
data
->
set
(
"ru_stime"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_stime
.
tv_sec
));
data
->
set
(
"ru_maxrss"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_maxrss
));
data
->
set
(
"ru_ixrss"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_ixrss
));
data
->
set
(
"ru_idrss"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_idrss
));
data
->
set
(
"ru_isrss"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_isrss
));
data
->
set
(
"ru_minflt"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_minflt
));
data
->
set
(
"ru_majflt"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_majflt
));
data
->
set
(
"ru_nswap"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_nswap
));
data
->
set
(
"ru_inblock"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_inblock
));
data
->
set
(
"ru_oublock"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_oublock
));
data
->
set
(
"ru_msgsnd"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_msgsnd
));
data
->
set
(
"ru_msgrcv"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_msgrcv
));
data
->
set
(
"ru_nsignals"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_nsignals
));
data
->
set
(
"ru_nvcsw"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_nvcsw
));
data
->
set
(
"ru_nivcsw"
,
SrsAmf0Any
::
number
(
ru
->
r
.
ru_nivcsw
));
data
->
set
(
"ok"
,
SrsJsonAny
::
boolean
(
ru
->
ok
));
data
->
set
(
"sample_time"
,
SrsJsonAny
::
number
(
ru
->
sample_time
));
data
->
set
(
"ru_utime"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_utime
.
tv_sec
));
data
->
set
(
"ru_stime"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_stime
.
tv_sec
));
data
->
set
(
"ru_maxrss"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_maxrss
));
data
->
set
(
"ru_ixrss"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_ixrss
));
data
->
set
(
"ru_idrss"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_idrss
));
data
->
set
(
"ru_isrss"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_isrss
));
data
->
set
(
"ru_minflt"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_minflt
));
data
->
set
(
"ru_majflt"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_majflt
));
data
->
set
(
"ru_nswap"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_nswap
));
data
->
set
(
"ru_inblock"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_inblock
));
data
->
set
(
"ru_oublock"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_oublock
));
data
->
set
(
"ru_msgsnd"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_msgsnd
));
data
->
set
(
"ru_msgrcv"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_msgrcv
));
data
->
set
(
"ru_nsignals"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_nsignals
));
data
->
set
(
"ru_nvcsw"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_nvcsw
));
data
->
set
(
"ru_nivcsw"
,
SrsJsonAny
::
number
(
ru
->
r
.
ru_nivcsw
));
return
srs_api_response
(
w
,
r
,
obj
->
to_json
());
}
...
...
@@ -332,13 +332,13 @@ int SrsGoApiSelfProcStats::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage
{
SrsStatistic
*
stat
=
SrsStatistic
::
instance
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
SrsProcSelfStat
*
u
=
srs_get_self_proc_stat
();
...
...
@@ -346,53 +346,53 @@ int SrsGoApiSelfProcStats::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage
string
state
;
state
+=
(
char
)
u
->
state
;
data
->
set
(
"ok"
,
SrsAmf0Any
::
boolean
(
u
->
ok
));
data
->
set
(
"sample_time"
,
SrsAmf0Any
::
number
(
u
->
sample_time
));
data
->
set
(
"percent"
,
SrsAmf0Any
::
number
(
u
->
percent
));
data
->
set
(
"pid"
,
SrsAmf0Any
::
number
(
u
->
pid
));
data
->
set
(
"comm"
,
SrsAmf0Any
::
str
(
u
->
comm
));
data
->
set
(
"state"
,
SrsAmf0Any
::
str
(
state
.
c_str
()));
data
->
set
(
"ppid"
,
SrsAmf0Any
::
number
(
u
->
ppid
));
data
->
set
(
"pgrp"
,
SrsAmf0Any
::
number
(
u
->
pgrp
));
data
->
set
(
"session"
,
SrsAmf0Any
::
number
(
u
->
session
));
data
->
set
(
"tty_nr"
,
SrsAmf0Any
::
number
(
u
->
tty_nr
));
data
->
set
(
"tpgid"
,
SrsAmf0Any
::
number
(
u
->
tpgid
));
data
->
set
(
"flags"
,
SrsAmf0Any
::
number
(
u
->
flags
));
data
->
set
(
"minflt"
,
SrsAmf0Any
::
number
(
u
->
minflt
));
data
->
set
(
"cminflt"
,
SrsAmf0Any
::
number
(
u
->
cminflt
));
data
->
set
(
"majflt"
,
SrsAmf0Any
::
number
(
u
->
majflt
));
data
->
set
(
"cmajflt"
,
SrsAmf0Any
::
number
(
u
->
cmajflt
));
data
->
set
(
"utime"
,
SrsAmf0Any
::
number
(
u
->
utime
));
data
->
set
(
"stime"
,
SrsAmf0Any
::
number
(
u
->
stime
));
data
->
set
(
"cutime"
,
SrsAmf0Any
::
number
(
u
->
cutime
));
data
->
set
(
"cstime"
,
SrsAmf0Any
::
number
(
u
->
cstime
));
data
->
set
(
"priority"
,
SrsAmf0Any
::
number
(
u
->
priority
));
data
->
set
(
"nice"
,
SrsAmf0Any
::
number
(
u
->
nice
));
data
->
set
(
"num_threads"
,
SrsAmf0Any
::
number
(
u
->
num_threads
));
data
->
set
(
"itrealvalue"
,
SrsAmf0Any
::
number
(
u
->
itrealvalue
));
data
->
set
(
"starttime"
,
SrsAmf0Any
::
number
(
u
->
starttime
));
data
->
set
(
"vsize"
,
SrsAmf0Any
::
number
(
u
->
vsize
));
data
->
set
(
"rss"
,
SrsAmf0Any
::
number
(
u
->
rss
));
data
->
set
(
"rsslim"
,
SrsAmf0Any
::
number
(
u
->
rsslim
));
data
->
set
(
"startcode"
,
SrsAmf0Any
::
number
(
u
->
startcode
));
data
->
set
(
"endcode"
,
SrsAmf0Any
::
number
(
u
->
endcode
));
data
->
set
(
"startstack"
,
SrsAmf0Any
::
number
(
u
->
startstack
));
data
->
set
(
"kstkesp"
,
SrsAmf0Any
::
number
(
u
->
kstkesp
));
data
->
set
(
"kstkeip"
,
SrsAmf0Any
::
number
(
u
->
kstkeip
));
data
->
set
(
"signal"
,
SrsAmf0Any
::
number
(
u
->
signal
));
data
->
set
(
"blocked"
,
SrsAmf0Any
::
number
(
u
->
blocked
));
data
->
set
(
"sigignore"
,
SrsAmf0Any
::
number
(
u
->
sigignore
));
data
->
set
(
"sigcatch"
,
SrsAmf0Any
::
number
(
u
->
sigcatch
));
data
->
set
(
"wchan"
,
SrsAmf0Any
::
number
(
u
->
wchan
));
data
->
set
(
"nswap"
,
SrsAmf0Any
::
number
(
u
->
nswap
));
data
->
set
(
"cnswap"
,
SrsAmf0Any
::
number
(
u
->
cnswap
));
data
->
set
(
"exit_signal"
,
SrsAmf0Any
::
number
(
u
->
exit_signal
));
data
->
set
(
"processor"
,
SrsAmf0Any
::
number
(
u
->
processor
));
data
->
set
(
"rt_priority"
,
SrsAmf0Any
::
number
(
u
->
rt_priority
));
data
->
set
(
"policy"
,
SrsAmf0Any
::
number
(
u
->
policy
));
data
->
set
(
"delayacct_blkio_ticks"
,
SrsAmf0Any
::
number
(
u
->
delayacct_blkio_ticks
));
data
->
set
(
"guest_time"
,
SrsAmf0Any
::
number
(
u
->
guest_time
));
data
->
set
(
"cguest_time"
,
SrsAmf0Any
::
number
(
u
->
cguest_time
));
data
->
set
(
"ok"
,
SrsJsonAny
::
boolean
(
u
->
ok
));
data
->
set
(
"sample_time"
,
SrsJsonAny
::
number
(
u
->
sample_time
));
data
->
set
(
"percent"
,
SrsJsonAny
::
number
(
u
->
percent
));
data
->
set
(
"pid"
,
SrsJsonAny
::
number
(
u
->
pid
));
data
->
set
(
"comm"
,
SrsJsonAny
::
str
(
u
->
comm
));
data
->
set
(
"state"
,
SrsJsonAny
::
str
(
state
.
c_str
()));
data
->
set
(
"ppid"
,
SrsJsonAny
::
number
(
u
->
ppid
));
data
->
set
(
"pgrp"
,
SrsJsonAny
::
number
(
u
->
pgrp
));
data
->
set
(
"session"
,
SrsJsonAny
::
number
(
u
->
session
));
data
->
set
(
"tty_nr"
,
SrsJsonAny
::
number
(
u
->
tty_nr
));
data
->
set
(
"tpgid"
,
SrsJsonAny
::
number
(
u
->
tpgid
));
data
->
set
(
"flags"
,
SrsJsonAny
::
number
(
u
->
flags
));
data
->
set
(
"minflt"
,
SrsJsonAny
::
number
(
u
->
minflt
));
data
->
set
(
"cminflt"
,
SrsJsonAny
::
number
(
u
->
cminflt
));
data
->
set
(
"majflt"
,
SrsJsonAny
::
number
(
u
->
majflt
));
data
->
set
(
"cmajflt"
,
SrsJsonAny
::
number
(
u
->
cmajflt
));
data
->
set
(
"utime"
,
SrsJsonAny
::
number
(
u
->
utime
));
data
->
set
(
"stime"
,
SrsJsonAny
::
number
(
u
->
stime
));
data
->
set
(
"cutime"
,
SrsJsonAny
::
number
(
u
->
cutime
));
data
->
set
(
"cstime"
,
SrsJsonAny
::
number
(
u
->
cstime
));
data
->
set
(
"priority"
,
SrsJsonAny
::
number
(
u
->
priority
));
data
->
set
(
"nice"
,
SrsJsonAny
::
number
(
u
->
nice
));
data
->
set
(
"num_threads"
,
SrsJsonAny
::
number
(
u
->
num_threads
));
data
->
set
(
"itrealvalue"
,
SrsJsonAny
::
number
(
u
->
itrealvalue
));
data
->
set
(
"starttime"
,
SrsJsonAny
::
number
(
u
->
starttime
));
data
->
set
(
"vsize"
,
SrsJsonAny
::
number
(
u
->
vsize
));
data
->
set
(
"rss"
,
SrsJsonAny
::
number
(
u
->
rss
));
data
->
set
(
"rsslim"
,
SrsJsonAny
::
number
(
u
->
rsslim
));
data
->
set
(
"startcode"
,
SrsJsonAny
::
number
(
u
->
startcode
));
data
->
set
(
"endcode"
,
SrsJsonAny
::
number
(
u
->
endcode
));
data
->
set
(
"startstack"
,
SrsJsonAny
::
number
(
u
->
startstack
));
data
->
set
(
"kstkesp"
,
SrsJsonAny
::
number
(
u
->
kstkesp
));
data
->
set
(
"kstkeip"
,
SrsJsonAny
::
number
(
u
->
kstkeip
));
data
->
set
(
"signal"
,
SrsJsonAny
::
number
(
u
->
signal
));
data
->
set
(
"blocked"
,
SrsJsonAny
::
number
(
u
->
blocked
));
data
->
set
(
"sigignore"
,
SrsJsonAny
::
number
(
u
->
sigignore
));
data
->
set
(
"sigcatch"
,
SrsJsonAny
::
number
(
u
->
sigcatch
));
data
->
set
(
"wchan"
,
SrsJsonAny
::
number
(
u
->
wchan
));
data
->
set
(
"nswap"
,
SrsJsonAny
::
number
(
u
->
nswap
));
data
->
set
(
"cnswap"
,
SrsJsonAny
::
number
(
u
->
cnswap
));
data
->
set
(
"exit_signal"
,
SrsJsonAny
::
number
(
u
->
exit_signal
));
data
->
set
(
"processor"
,
SrsJsonAny
::
number
(
u
->
processor
));
data
->
set
(
"rt_priority"
,
SrsJsonAny
::
number
(
u
->
rt_priority
));
data
->
set
(
"policy"
,
SrsJsonAny
::
number
(
u
->
policy
));
data
->
set
(
"delayacct_blkio_ticks"
,
SrsJsonAny
::
number
(
u
->
delayacct_blkio_ticks
));
data
->
set
(
"guest_time"
,
SrsJsonAny
::
number
(
u
->
guest_time
));
data
->
set
(
"cguest_time"
,
SrsJsonAny
::
number
(
u
->
cguest_time
));
return
srs_api_response
(
w
,
r
,
obj
->
to_json
());
}
...
...
@@ -409,29 +409,29 @@ int SrsGoApiSystemProcStats::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa
{
SrsStatistic
*
stat
=
SrsStatistic
::
instance
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
SrsProcSystemStat
*
s
=
srs_get_system_proc_stat
();
data
->
set
(
"ok"
,
SrsAmf0Any
::
boolean
(
s
->
ok
));
data
->
set
(
"sample_time"
,
SrsAmf0Any
::
number
(
s
->
sample_time
));
data
->
set
(
"percent"
,
SrsAmf0Any
::
number
(
s
->
percent
));
data
->
set
(
"user"
,
SrsAmf0Any
::
number
(
s
->
user
));
data
->
set
(
"nice"
,
SrsAmf0Any
::
number
(
s
->
nice
));
data
->
set
(
"sys"
,
SrsAmf0Any
::
number
(
s
->
sys
));
data
->
set
(
"idle"
,
SrsAmf0Any
::
number
(
s
->
idle
));
data
->
set
(
"iowait"
,
SrsAmf0Any
::
number
(
s
->
iowait
));
data
->
set
(
"irq"
,
SrsAmf0Any
::
number
(
s
->
irq
));
data
->
set
(
"softirq"
,
SrsAmf0Any
::
number
(
s
->
softirq
));
data
->
set
(
"steal"
,
SrsAmf0Any
::
number
(
s
->
steal
));
data
->
set
(
"guest"
,
SrsAmf0Any
::
number
(
s
->
guest
));
data
->
set
(
"ok"
,
SrsJsonAny
::
boolean
(
s
->
ok
));
data
->
set
(
"sample_time"
,
SrsJsonAny
::
number
(
s
->
sample_time
));
data
->
set
(
"percent"
,
SrsJsonAny
::
number
(
s
->
percent
));
data
->
set
(
"user"
,
SrsJsonAny
::
number
(
s
->
user
));
data
->
set
(
"nice"
,
SrsJsonAny
::
number
(
s
->
nice
));
data
->
set
(
"sys"
,
SrsJsonAny
::
number
(
s
->
sys
));
data
->
set
(
"idle"
,
SrsJsonAny
::
number
(
s
->
idle
));
data
->
set
(
"iowait"
,
SrsJsonAny
::
number
(
s
->
iowait
));
data
->
set
(
"irq"
,
SrsJsonAny
::
number
(
s
->
irq
));
data
->
set
(
"softirq"
,
SrsJsonAny
::
number
(
s
->
softirq
));
data
->
set
(
"steal"
,
SrsJsonAny
::
number
(
s
->
steal
));
data
->
set
(
"guest"
,
SrsJsonAny
::
number
(
s
->
guest
));
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
SrsMemInfo
*
m
=
srs_get_meminfo
();
data
->
set
(
"ok"
,
SrsAmf0Any
::
boolean
(
m
->
ok
));
data
->
set
(
"sample_time"
,
SrsAmf0Any
::
number
(
m
->
sample_time
));
data
->
set
(
"percent_ram"
,
SrsAmf0Any
::
number
(
m
->
percent_ram
));
data
->
set
(
"percent_swap"
,
SrsAmf0Any
::
number
(
m
->
percent_swap
));
data
->
set
(
"MemActive"
,
SrsAmf0Any
::
number
(
m
->
MemActive
));
data
->
set
(
"RealInUse"
,
SrsAmf0Any
::
number
(
m
->
RealInUse
));
data
->
set
(
"NotInUse"
,
SrsAmf0Any
::
number
(
m
->
NotInUse
));
data
->
set
(
"MemTotal"
,
SrsAmf0Any
::
number
(
m
->
MemTotal
));
data
->
set
(
"MemFree"
,
SrsAmf0Any
::
number
(
m
->
MemFree
));
data
->
set
(
"Buffers"
,
SrsAmf0Any
::
number
(
m
->
Buffers
));
data
->
set
(
"Cached"
,
SrsAmf0Any
::
number
(
m
->
Cached
));
data
->
set
(
"SwapTotal"
,
SrsAmf0Any
::
number
(
m
->
SwapTotal
));
data
->
set
(
"SwapFree"
,
SrsAmf0Any
::
number
(
m
->
SwapFree
));
data
->
set
(
"ok"
,
SrsJsonAny
::
boolean
(
m
->
ok
));
data
->
set
(
"sample_time"
,
SrsJsonAny
::
number
(
m
->
sample_time
));
data
->
set
(
"percent_ram"
,
SrsJsonAny
::
number
(
m
->
percent_ram
));
data
->
set
(
"percent_swap"
,
SrsJsonAny
::
number
(
m
->
percent_swap
));
data
->
set
(
"MemActive"
,
SrsJsonAny
::
number
(
m
->
MemActive
));
data
->
set
(
"RealInUse"
,
SrsJsonAny
::
number
(
m
->
RealInUse
));
data
->
set
(
"NotInUse"
,
SrsJsonAny
::
number
(
m
->
NotInUse
));
data
->
set
(
"MemTotal"
,
SrsJsonAny
::
number
(
m
->
MemTotal
));
data
->
set
(
"MemFree"
,
SrsJsonAny
::
number
(
m
->
MemFree
));
data
->
set
(
"Buffers"
,
SrsJsonAny
::
number
(
m
->
Buffers
));
data
->
set
(
"Cached"
,
SrsJsonAny
::
number
(
m
->
Cached
));
data
->
set
(
"SwapTotal"
,
SrsJsonAny
::
number
(
m
->
SwapTotal
));
data
->
set
(
"SwapFree"
,
SrsJsonAny
::
number
(
m
->
SwapFree
));
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
data
->
set
(
"primary"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_PRIMARY
));
data
->
set
(
"license"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_LICENSE
));
data
->
set
(
"copyright"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_COPYRIGHT
));
data
->
set
(
"authors"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_AUTHROS
));
data
->
set
(
"contributors_link"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_CONTRIBUTORS_URL
));
data
->
set
(
"contributors"
,
SrsAmf0Any
::
str
(
SRS_AUTO_CONSTRIBUTORS
));
data
->
set
(
"primary"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_PRIMARY
));
data
->
set
(
"license"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_LICENSE
));
data
->
set
(
"copyright"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_COPYRIGHT
));
data
->
set
(
"authors"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_AUTHROS
));
data
->
set
(
"contributors_link"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_CONTRIBUTORS_URL
));
data
->
set
(
"contributors"
,
SrsJsonAny
::
str
(
SRS_AUTO_CONSTRIBUTORS
));
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
data
->
set
(
"options"
,
SrsAmf0Any
::
str
(
SRS_AUTO_USER_CONFIGURE
));
data
->
set
(
"options2"
,
SrsAmf0Any
::
str
(
SRS_AUTO_CONFIGURE
));
data
->
set
(
"build"
,
SrsAmf0Any
::
str
(
SRS_AUTO_BUILD_DATE
));
data
->
set
(
"build2"
,
SrsAmf0Any
::
str
(
SRS_AUTO_BUILD_TS
));
data
->
set
(
"options"
,
SrsJsonAny
::
str
(
SRS_AUTO_USER_CONFIGURE
));
data
->
set
(
"options2"
,
SrsJsonAny
::
str
(
SRS_AUTO_CONFIGURE
));
data
->
set
(
"build"
,
SrsJsonAny
::
str
(
SRS_AUTO_BUILD_DATE
));
data
->
set
(
"build2"
,
SrsJsonAny
::
str
(
SRS_AUTO_BUILD_TS
));
Srs
Amf0Object
*
features
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
features
=
SrsJson
Any
::
object
();
data
->
set
(
"features"
,
features
);
#ifdef SRS_AUTO_SSL
features
->
set
(
"ssl"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"ssl"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"ssl"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"ssl"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_HLS
features
->
set
(
"hls"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"hls"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"hls"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"hls"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_HDS
features
->
set
(
"hds"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"hds"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"hds"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"hds"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_HTTP_CALLBACK
features
->
set
(
"callback"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"callback"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"callback"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"callback"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_HTTP_API
features
->
set
(
"api"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"api"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"api"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"api"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_HTTP_SERVER
features
->
set
(
"httpd"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"httpd"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"httpd"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"httpd"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_DVR
features
->
set
(
"dvr"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"dvr"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"dvr"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"dvr"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_TRANSCODE
features
->
set
(
"transcode"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"transcode"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"transcode"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"transcode"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_INGEST
features
->
set
(
"ingest"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"ingest"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"ingest"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"ingest"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_STAT
features
->
set
(
"stat"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"stat"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"stat"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"stat"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_NGINX
features
->
set
(
"nginx"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"nginx"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"nginx"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"nginx"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_FFMPEG_TOOL
features
->
set
(
"ffmpeg"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"ffmpeg"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"ffmpeg"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"ffmpeg"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_AUTO_STREAM_CASTER
features
->
set
(
"caster"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"caster"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"caster"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"caster"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_PERF_COMPLEX_SEND
features
->
set
(
"complex_send"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"complex_send"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"complex_send"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"complex_send"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_PERF_TCP_NODELAY
features
->
set
(
"tcp_nodelay"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"tcp_nodelay"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"tcp_nodelay"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"tcp_nodelay"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_PERF_SO_SNDBUF_SIZE
features
->
set
(
"so_sendbuf"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"so_sendbuf"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"so_sendbuf"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"so_sendbuf"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
#ifdef SRS_PERF_MERGED_READ
features
->
set
(
"mr"
,
Srs
Amf0
Any
::
boolean
(
true
));
features
->
set
(
"mr"
,
Srs
Json
Any
::
boolean
(
true
));
#else
features
->
set
(
"mr"
,
Srs
Amf0
Any
::
boolean
(
false
));
features
->
set
(
"mr"
,
Srs
Json
Any
::
boolean
(
false
));
#endif
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
data
->
set
(
"uri"
,
SrsAmf0Any
::
str
(
r
->
uri
().
c_str
()));
data
->
set
(
"path"
,
SrsAmf0Any
::
str
(
r
->
path
().
c_str
()));
data
->
set
(
"uri"
,
SrsJsonAny
::
str
(
r
->
uri
().
c_str
()));
data
->
set
(
"path"
,
SrsJsonAny
::
str
(
r
->
path
().
c_str
()));
// method
data
->
set
(
"METHOD"
,
Srs
Amf0
Any
::
str
(
r
->
method_str
().
c_str
()));
data
->
set
(
"METHOD"
,
Srs
Json
Any
::
str
(
r
->
method_str
().
c_str
()));
// request headers
Srs
Amf0Object
*
headers
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
headers
=
SrsJson
Any
::
object
();
data
->
set
(
"headers"
,
headers
);
for
(
int
i
=
0
;
i
<
r
->
request_header_count
();
i
++
)
{
std
::
string
key
=
r
->
request_header_key_at
(
i
);
std
::
string
value
=
r
->
request_header_value_at
(
i
);
headers
->
set
(
key
,
Srs
Amf0
Any
::
str
(
value
.
c_str
()));
headers
->
set
(
key
,
Srs
Json
Any
::
str
(
value
.
c_str
()));
}
// server informations
Srs
Amf0Object
*
server
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
server
=
SrsJson
Any
::
object
();
data
->
set
(
"headers"
,
server
);
server
->
set
(
"sigature"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_KEY
));
server
->
set
(
"name"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_NAME
));
server
->
set
(
"version"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_VERSION
));
server
->
set
(
"link"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_URL
));
server
->
set
(
"time"
,
SrsAmf0Any
::
number
(
srs_get_system_time_ms
()));
server
->
set
(
"sigature"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_KEY
));
server
->
set
(
"name"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_NAME
));
server
->
set
(
"version"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_VERSION
));
server
->
set
(
"link"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_URL
));
server
->
set
(
"time"
,
SrsJsonAny
::
number
(
srs_get_system_time_ms
()));
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
);
}
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
if
(
r
->
is_http_get
())
{
if
(
!
vhost
)
{
Srs
Amf0StrictArray
*
data
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
data
=
SrsJsonAny
::
array
();
obj
->
set
(
"vhosts"
,
data
);
if
((
ret
=
stat
->
dumps_vhosts
(
data
))
!=
ERROR_SUCCESS
)
{
return
srs_api_response_code
(
w
,
r
,
ret
);
}
}
else
{
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"vhost"
,
data
);;
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
);
}
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
if
(
r
->
is_http_get
())
{
if
(
!
stream
)
{
Srs
Amf0StrictArray
*
data
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
data
=
SrsJsonAny
::
array
();
obj
->
set
(
"streams"
,
data
);
if
((
ret
=
stat
->
dumps_streams
(
data
))
!=
ERROR_SUCCESS
)
{
return
srs_api_response_code
(
w
,
r
,
ret
);
}
}
else
{
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"stream"
,
data
);;
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
);
}
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsAmf0Any
::
number
(
stat
->
server_id
()));
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
obj
->
set
(
"server"
,
SrsJsonAny
::
number
(
stat
->
server_id
()));
if
(
r
->
is_http_get
())
{
if
(
!
client
)
{
Srs
Amf0StrictArray
*
data
=
SrsAmf0Any
::
strict_
array
();
Srs
JsonArray
*
data
=
SrsJsonAny
::
array
();
obj
->
set
(
"clients"
,
data
);
if
((
ret
=
stat
->
dumps_clients
(
data
,
0
,
10
))
!=
ERROR_SUCCESS
)
{
return
srs_api_response_code
(
w
,
r
,
ret
);
}
}
else
{
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"client"
,
data
);;
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"
);
// the object to return for request.
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
obj
->
set
(
"code"
,
SrsAmf0Any
::
number
(
ERROR_SUCCESS
));
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"code"
,
SrsJsonAny
::
number
(
ERROR_SUCCESS
));
// for rpc=raw, to query the raw api config for http api.
if
(
rpc
==
"raw"
)
{
...
...
@@ -952,14 +952,14 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return
srs_api_response_code
(
w
,
r
,
ret
);
}
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"vhost"
,
data
);
if
((
ret
=
_srs_config
->
vhost_to_json
(
conf
,
data
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"raw api query vhost failed. ret=%d"
,
ret
);
return
srs_api_response_code
(
w
,
r
,
ret
);
}
}
else
if
(
scope
==
"minimal"
)
{
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"minimal"
,
data
);
// query minimal scope.
...
...
@@ -968,7 +968,7 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
return
srs_api_response_code
(
w
,
r
,
ret
);
}
}
else
{
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"global"
,
data
);
// query global scope.
...
...
trunk/src/app/srs_app_http_hooks.cpp
查看文件 @
3f7e69b
...
...
@@ -63,16 +63,16 @@ int SrsHttpHooks::on_connect(string url, SrsRequest* req)
int
client_id
=
_srs_context
->
get_id
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_connect"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"tcUrl"
,
SrsAmf0Any
::
str
(
req
->
tcUrl
.
c_str
()));
obj
->
set
(
"pageUrl"
,
SrsAmf0Any
::
str
(
req
->
pageUrl
.
c_str
()));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_connect"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"tcUrl"
,
SrsJsonAny
::
str
(
req
->
tcUrl
.
c_str
()));
obj
->
set
(
"pageUrl"
,
SrsJsonAny
::
str
(
req
->
pageUrl
.
c_str
()));
std
::
string
data
=
obj
->
to_json
();
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
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_close"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"send_bytes"
,
SrsAmf0Any
::
number
(
send_bytes
));
obj
->
set
(
"recv_bytes"
,
SrsAmf0Any
::
number
(
recv_bytes
));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_close"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"send_bytes"
,
SrsJsonAny
::
number
(
send_bytes
));
obj
->
set
(
"recv_bytes"
,
SrsJsonAny
::
number
(
recv_bytes
));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
@@ -135,15 +135,15 @@ int SrsHttpHooks::on_publish(string url, SrsRequest* req)
int
client_id
=
_srs_context
->
get_id
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_publish"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_publish"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsJsonAny
::
str
(
req
->
stream
.
c_str
()));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
@@ -170,15 +170,15 @@ void SrsHttpHooks::on_unpublish(string url, SrsRequest* req)
int
client_id
=
_srs_context
->
get_id
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_unpublish"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_unpublish"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsJsonAny
::
str
(
req
->
stream
.
c_str
()));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
@@ -205,16 +205,16 @@ int SrsHttpHooks::on_play(string url, SrsRequest* req)
int
client_id
=
_srs_context
->
get_id
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_play"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"pageUrl"
,
SrsAmf0Any
::
str
(
req
->
pageUrl
.
c_str
()));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_play"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsJsonAny
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"pageUrl"
,
SrsJsonAny
::
str
(
req
->
pageUrl
.
c_str
()));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
@@ -241,15 +241,15 @@ void SrsHttpHooks::on_stop(string url, SrsRequest* req)
int
client_id
=
_srs_context
->
get_id
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_stop"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_stop"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsJsonAny
::
str
(
req
->
stream
.
c_str
()));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
@@ -277,17 +277,17 @@ int SrsHttpHooks::on_dvr(int cid, string url, SrsRequest* req, string file)
int
client_id
=
cid
;
std
::
string
cwd
=
_srs_config
->
cwd
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_dvr"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"cwd"
,
SrsAmf0Any
::
str
(
cwd
.
c_str
()));
obj
->
set
(
"file"
,
SrsAmf0Any
::
str
(
file
.
c_str
()));
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_dvr"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsJsonAny
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"cwd"
,
SrsJsonAny
::
str
(
cwd
.
c_str
()));
obj
->
set
(
"file"
,
SrsJsonAny
::
str
(
file
.
c_str
()));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
@@ -315,22 +315,22 @@ int SrsHttpHooks::on_hls(int cid, string url, SrsRequest* req, string file, stri
int
client_id
=
cid
;
std
::
string
cwd
=
_srs_config
->
cwd
();
SrsAmf0Object
*
obj
=
SrsAmf0Any
::
object
();
SrsAutoFree
(
SrsAmf0Object
,
obj
);
obj
->
set
(
"action"
,
SrsAmf0Any
::
str
(
"on_hls"
));
obj
->
set
(
"client_id"
,
SrsAmf0Any
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"duration"
,
SrsAmf0Any
::
number
(
duration
));
obj
->
set
(
"cwd"
,
SrsAmf0Any
::
str
(
cwd
.
c_str
()));
obj
->
set
(
"file"
,
SrsAmf0Any
::
str
(
file
.
c_str
()));
obj
->
set
(
"url"
,
SrsAmf0Any
::
str
(
url
.
c_str
()));
obj
->
set
(
"m3u8"
,
SrsAmf0Any
::
str
(
m3u8
.
c_str
()));
obj
->
set
(
"m3u8_url"
,
SrsAmf0Any
::
str
(
m3u8_url
.
c_str
()));
obj
->
set
(
"seq_no"
,
SrsAmf0Any
::
number
(
sn
));
SrsJsonObject
*
obj
=
SrsJsonAny
::
object
();
SrsAutoFree
(
SrsJsonObject
,
obj
);
obj
->
set
(
"action"
,
SrsJsonAny
::
str
(
"on_hls"
));
obj
->
set
(
"client_id"
,
SrsJsonAny
::
number
(
client_id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
str
(
req
->
vhost
.
c_str
()));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
req
->
app
.
c_str
()));
obj
->
set
(
"stream"
,
SrsJsonAny
::
str
(
req
->
stream
.
c_str
()));
obj
->
set
(
"duration"
,
SrsJsonAny
::
number
(
duration
));
obj
->
set
(
"cwd"
,
SrsJsonAny
::
str
(
cwd
.
c_str
()));
obj
->
set
(
"file"
,
SrsJsonAny
::
str
(
file
.
c_str
()));
obj
->
set
(
"url"
,
SrsJsonAny
::
str
(
url
.
c_str
()));
obj
->
set
(
"m3u8"
,
SrsJsonAny
::
str
(
m3u8
.
c_str
()));
obj
->
set
(
"m3u8_url"
,
SrsJsonAny
::
str
(
m3u8_url
.
c_str
()));
obj
->
set
(
"seq_no"
,
SrsJsonAny
::
number
(
sn
));
std
::
string
data
=
obj
->
to_json
();
std
::
string
res
;
...
...
trunk/src/app/srs_app_statistic.cpp
查看文件 @
3f7e69b
...
...
@@ -58,7 +58,7 @@ SrsStatisticVhost::~SrsStatisticVhost()
srs_freep
(
kbps
);
}
int
SrsStatisticVhost
::
dumps
(
Srs
Amf0
Object
*
obj
)
int
SrsStatisticVhost
::
dumps
(
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -66,26 +66,26 @@ int SrsStatisticVhost::dumps(SrsAmf0Object* obj)
bool
hls_enabled
=
_srs_config
->
get_hls_enabled
(
vhost
);
bool
enabled
=
_srs_config
->
get_vhost_enabled
(
vhost
);
obj
->
set
(
"id"
,
SrsAmf0Any
::
number
(
id
));
obj
->
set
(
"name"
,
SrsAmf0Any
::
str
(
vhost
.
c_str
()));
obj
->
set
(
"enabled"
,
SrsAmf0Any
::
boolean
(
enabled
));
obj
->
set
(
"clients"
,
SrsAmf0Any
::
number
(
nb_clients
));
obj
->
set
(
"streams"
,
SrsAmf0Any
::
number
(
nb_streams
));
obj
->
set
(
"send_bytes"
,
SrsAmf0Any
::
number
(
kbps
->
get_send_bytes
()));
obj
->
set
(
"recv_bytes"
,
SrsAmf0Any
::
number
(
kbps
->
get_recv_bytes
()));
obj
->
set
(
"id"
,
SrsJsonAny
::
number
(
id
));
obj
->
set
(
"name"
,
SrsJsonAny
::
str
(
vhost
.
c_str
()));
obj
->
set
(
"enabled"
,
SrsJsonAny
::
boolean
(
enabled
));
obj
->
set
(
"clients"
,
SrsJsonAny
::
number
(
nb_clients
));
obj
->
set
(
"streams"
,
SrsJsonAny
::
number
(
nb_streams
));
obj
->
set
(
"send_bytes"
,
SrsJsonAny
::
number
(
kbps
->
get_send_bytes
()));
obj
->
set
(
"recv_bytes"
,
SrsJsonAny
::
number
(
kbps
->
get_recv_bytes
()));
Srs
Amf0Object
*
okbps
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
okbps
=
SrsJson
Any
::
object
();
obj
->
set
(
"kbps"
,
okbps
);
okbps
->
set
(
"recv_30s"
,
SrsAmf0Any
::
number
(
kbps
->
get_recv_kbps_30s
()));
okbps
->
set
(
"send_30s"
,
SrsAmf0Any
::
number
(
kbps
->
get_send_kbps_30s
()));
okbps
->
set
(
"recv_30s"
,
SrsJsonAny
::
number
(
kbps
->
get_recv_kbps_30s
()));
okbps
->
set
(
"send_30s"
,
SrsJsonAny
::
number
(
kbps
->
get_send_kbps_30s
()));
Srs
Amf0Object
*
hls
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
hls
=
SrsJson
Any
::
object
();
obj
->
set
(
"hls"
,
hls
);
hls
->
set
(
"enabled"
,
Srs
Amf0
Any
::
boolean
(
hls_enabled
));
hls
->
set
(
"enabled"
,
Srs
Json
Any
::
boolean
(
hls_enabled
));
if
(
hls_enabled
)
{
hls
->
set
(
"fragment"
,
Srs
Amf0
Any
::
number
(
_srs_config
->
get_hls_fragment
(
vhost
)));
hls
->
set
(
"fragment"
,
Srs
Json
Any
::
number
(
_srs_config
->
get_hls_fragment
(
vhost
)));
}
return
ret
;
...
...
@@ -122,54 +122,54 @@ SrsStatisticStream::~SrsStatisticStream()
srs_freep
(
kbps
);
}
int
SrsStatisticStream
::
dumps
(
Srs
Amf0
Object
*
obj
)
int
SrsStatisticStream
::
dumps
(
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
obj
->
set
(
"id"
,
SrsAmf0Any
::
number
(
id
));
obj
->
set
(
"name"
,
SrsAmf0Any
::
str
(
stream
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
number
(
vhost
->
id
));
obj
->
set
(
"app"
,
SrsAmf0Any
::
str
(
app
.
c_str
()));
obj
->
set
(
"live_ms"
,
SrsAmf0Any
::
number
(
srs_get_system_time_ms
()));
obj
->
set
(
"clients"
,
SrsAmf0Any
::
number
(
nb_clients
));
obj
->
set
(
"send_bytes"
,
SrsAmf0Any
::
number
(
kbps
->
get_send_bytes
()));
obj
->
set
(
"recv_bytes"
,
SrsAmf0Any
::
number
(
kbps
->
get_recv_bytes
()));
obj
->
set
(
"id"
,
SrsJsonAny
::
number
(
id
));
obj
->
set
(
"name"
,
SrsJsonAny
::
str
(
stream
.
c_str
()));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
number
(
vhost
->
id
));
obj
->
set
(
"app"
,
SrsJsonAny
::
str
(
app
.
c_str
()));
obj
->
set
(
"live_ms"
,
SrsJsonAny
::
number
(
srs_get_system_time_ms
()));
obj
->
set
(
"clients"
,
SrsJsonAny
::
number
(
nb_clients
));
obj
->
set
(
"send_bytes"
,
SrsJsonAny
::
number
(
kbps
->
get_send_bytes
()));
obj
->
set
(
"recv_bytes"
,
SrsJsonAny
::
number
(
kbps
->
get_recv_bytes
()));
Srs
Amf0Object
*
okbps
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
okbps
=
SrsJson
Any
::
object
();
obj
->
set
(
"kbps"
,
okbps
);
okbps
->
set
(
"recv_30s"
,
SrsAmf0Any
::
number
(
kbps
->
get_recv_kbps_30s
()));
okbps
->
set
(
"send_30s"
,
SrsAmf0Any
::
number
(
kbps
->
get_send_kbps_30s
()));
okbps
->
set
(
"recv_30s"
,
SrsJsonAny
::
number
(
kbps
->
get_recv_kbps_30s
()));
okbps
->
set
(
"send_30s"
,
SrsJsonAny
::
number
(
kbps
->
get_send_kbps_30s
()));
Srs
Amf0Object
*
publish
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
publish
=
SrsJson
Any
::
object
();
obj
->
set
(
"publish"
,
publish
);
publish
->
set
(
"active"
,
SrsAmf0Any
::
boolean
(
active
));
publish
->
set
(
"cid"
,
SrsAmf0Any
::
number
(
connection_cid
));
publish
->
set
(
"active"
,
SrsJsonAny
::
boolean
(
active
));
publish
->
set
(
"cid"
,
SrsJsonAny
::
number
(
connection_cid
));
if
(
!
has_video
)
{
obj
->
set
(
"video"
,
Srs
Amf0
Any
::
null
());
obj
->
set
(
"video"
,
Srs
Json
Any
::
null
());
}
else
{
Srs
Amf0Object
*
video
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
video
=
SrsJson
Any
::
object
();
obj
->
set
(
"video"
,
video
);
video
->
set
(
"codec"
,
SrsAmf0Any
::
str
(
srs_codec_video2str
(
vcodec
).
c_str
()));
video
->
set
(
"profile"
,
SrsAmf0Any
::
str
(
srs_codec_avc_profile2str
(
avc_profile
).
c_str
()));
video
->
set
(
"level"
,
SrsAmf0Any
::
str
(
srs_codec_avc_level2str
(
avc_level
).
c_str
()));
video
->
set
(
"width"
,
SrsAmf0Any
::
number
(
width
));
video
->
set
(
"height"
,
SrsAmf0Any
::
number
(
height
));
video
->
set
(
"codec"
,
SrsJsonAny
::
str
(
srs_codec_video2str
(
vcodec
).
c_str
()));
video
->
set
(
"profile"
,
SrsJsonAny
::
str
(
srs_codec_avc_profile2str
(
avc_profile
).
c_str
()));
video
->
set
(
"level"
,
SrsJsonAny
::
str
(
srs_codec_avc_level2str
(
avc_level
).
c_str
()));
video
->
set
(
"width"
,
SrsJsonAny
::
number
(
width
));
video
->
set
(
"height"
,
SrsJsonAny
::
number
(
height
));
}
if
(
!
has_audio
)
{
obj
->
set
(
"audio"
,
Srs
Amf0
Any
::
null
());
obj
->
set
(
"audio"
,
Srs
Json
Any
::
null
());
}
else
{
Srs
Amf0Object
*
audio
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
audio
=
SrsJson
Any
::
object
();
obj
->
set
(
"audio"
,
audio
);
audio
->
set
(
"codec"
,
SrsAmf0Any
::
str
(
srs_codec_audio2str
(
acodec
).
c_str
()));
audio
->
set
(
"sample_rate"
,
SrsAmf0Any
::
number
(
flv_sample_rates
[
asample_rate
]));
audio
->
set
(
"channel"
,
SrsAmf0Any
::
number
(
asound_type
+
1
));
audio
->
set
(
"profile"
,
SrsAmf0Any
::
str
(
srs_codec_aac_object2str
(
aac_object
).
c_str
()));
audio
->
set
(
"codec"
,
SrsJsonAny
::
str
(
srs_codec_audio2str
(
acodec
).
c_str
()));
audio
->
set
(
"sample_rate"
,
SrsJsonAny
::
number
(
flv_sample_rates
[
asample_rate
]));
audio
->
set
(
"channel"
,
SrsJsonAny
::
number
(
asound_type
+
1
));
audio
->
set
(
"profile"
,
SrsJsonAny
::
str
(
srs_codec_aac_object2str
(
aac_object
).
c_str
()));
}
return
ret
;
...
...
@@ -206,21 +206,21 @@ SrsStatisticClient::~SrsStatisticClient()
{
}
int
SrsStatisticClient
::
dumps
(
Srs
Amf0
Object
*
obj
)
int
SrsStatisticClient
::
dumps
(
Srs
Json
Object
*
obj
)
{
int
ret
=
ERROR_SUCCESS
;
obj
->
set
(
"id"
,
SrsAmf0Any
::
number
(
id
));
obj
->
set
(
"vhost"
,
SrsAmf0Any
::
number
(
stream
->
vhost
->
id
));
obj
->
set
(
"stream"
,
SrsAmf0Any
::
number
(
stream
->
id
));
obj
->
set
(
"ip"
,
SrsAmf0Any
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"pageUrl"
,
SrsAmf0Any
::
str
(
req
->
pageUrl
.
c_str
()));
obj
->
set
(
"swfUrl"
,
SrsAmf0Any
::
str
(
req
->
swfUrl
.
c_str
()));
obj
->
set
(
"tcUrl"
,
SrsAmf0Any
::
str
(
req
->
tcUrl
.
c_str
()));
obj
->
set
(
"url"
,
SrsAmf0Any
::
str
(
req
->
get_stream_url
().
c_str
()));
obj
->
set
(
"type"
,
SrsAmf0Any
::
str
(
srs_client_type_string
(
type
).
c_str
()));
obj
->
set
(
"publish"
,
SrsAmf0Any
::
boolean
(
srs_client_type_is_publish
(
type
)));
obj
->
set
(
"alive"
,
SrsAmf0Any
::
number
((
srs_get_system_time_ms
()
-
create
)
/
1000.0
));
obj
->
set
(
"id"
,
SrsJsonAny
::
number
(
id
));
obj
->
set
(
"vhost"
,
SrsJsonAny
::
number
(
stream
->
vhost
->
id
));
obj
->
set
(
"stream"
,
SrsJsonAny
::
number
(
stream
->
id
));
obj
->
set
(
"ip"
,
SrsJsonAny
::
str
(
req
->
ip
.
c_str
()));
obj
->
set
(
"pageUrl"
,
SrsJsonAny
::
str
(
req
->
pageUrl
.
c_str
()));
obj
->
set
(
"swfUrl"
,
SrsJsonAny
::
str
(
req
->
swfUrl
.
c_str
()));
obj
->
set
(
"tcUrl"
,
SrsJsonAny
::
str
(
req
->
tcUrl
.
c_str
()));
obj
->
set
(
"url"
,
SrsJsonAny
::
str
(
req
->
get_stream_url
().
c_str
()));
obj
->
set
(
"type"
,
SrsJsonAny
::
str
(
srs_client_type_string
(
type
).
c_str
()));
obj
->
set
(
"publish"
,
SrsJsonAny
::
boolean
(
srs_client_type_is_publish
(
type
)));
obj
->
set
(
"alive"
,
SrsJsonAny
::
number
((
srs_get_system_time_ms
()
-
create
)
/
1000.0
));
return
ret
;
}
...
...
@@ -456,7 +456,7 @@ int64_t SrsStatistic::server_id()
return
_server_id
;
}
int
SrsStatistic
::
dumps_vhosts
(
Srs
Amf0Strict
Array
*
arr
)
int
SrsStatistic
::
dumps_vhosts
(
Srs
Json
Array
*
arr
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -464,7 +464,7 @@ int SrsStatistic::dumps_vhosts(SrsAmf0StrictArray* arr)
for
(
it
=
vhosts
.
begin
();
it
!=
vhosts
.
end
();
it
++
)
{
SrsStatisticVhost
*
vhost
=
it
->
second
;
Srs
Amf0Object
*
obj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
obj
=
SrsJson
Any
::
object
();
arr
->
append
(
obj
);
if
((
ret
=
vhost
->
dumps
(
obj
))
!=
ERROR_SUCCESS
)
{
...
...
@@ -475,7 +475,7 @@ int SrsStatistic::dumps_vhosts(SrsAmf0StrictArray* arr)
return
ret
;
}
int
SrsStatistic
::
dumps_streams
(
Srs
Amf0Strict
Array
*
arr
)
int
SrsStatistic
::
dumps_streams
(
Srs
Json
Array
*
arr
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -483,7 +483,7 @@ int SrsStatistic::dumps_streams(SrsAmf0StrictArray* arr)
for
(
it
=
streams
.
begin
();
it
!=
streams
.
end
();
it
++
)
{
SrsStatisticStream
*
stream
=
it
->
second
;
Srs
Amf0Object
*
obj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
obj
=
SrsJson
Any
::
object
();
arr
->
append
(
obj
);
if
((
ret
=
stream
->
dumps
(
obj
))
!=
ERROR_SUCCESS
)
{
...
...
@@ -494,7 +494,7 @@ int SrsStatistic::dumps_streams(SrsAmf0StrictArray* arr)
return
ret
;
}
int
SrsStatistic
::
dumps_clients
(
Srs
Amf0Strict
Array
*
arr
,
int
start
,
int
count
)
int
SrsStatistic
::
dumps_clients
(
Srs
Json
Array
*
arr
,
int
start
,
int
count
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -506,7 +506,7 @@ int SrsStatistic::dumps_clients(SrsAmf0StrictArray* arr, int start, int count)
SrsStatisticClient
*
client
=
it
->
second
;
Srs
Amf0Object
*
obj
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
obj
=
SrsJson
Any
::
object
();
arr
->
append
(
obj
);
if
((
ret
=
client
->
dumps
(
obj
))
!=
ERROR_SUCCESS
)
{
...
...
trunk/src/app/srs_app_statistic.hpp
查看文件 @
3f7e69b
...
...
@@ -40,8 +40,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class
SrsKbps
;
class
SrsRequest
;
class
SrsConnection
;
class
SrsAmf0Object
;
class
SrsAmf0StrictArray
;
class
SrsJsonObject
;
class
SrsJsonArray
;
struct
SrsStatisticVhost
{
...
...
@@ -59,7 +59,7 @@ public:
SrsStatisticVhost
();
virtual
~
SrsStatisticVhost
();
public
:
virtual
int
dumps
(
Srs
Amf0
Object
*
obj
);
virtual
int
dumps
(
Srs
Json
Object
*
obj
);
};
struct
SrsStatisticStream
...
...
@@ -104,7 +104,7 @@ public:
SrsStatisticStream
();
virtual
~
SrsStatisticStream
();
public
:
virtual
int
dumps
(
Srs
Amf0
Object
*
obj
);
virtual
int
dumps
(
Srs
Json
Object
*
obj
);
public
:
/**
* publish the stream.
...
...
@@ -129,7 +129,7 @@ public:
SrsStatisticClient
();
virtual
~
SrsStatisticClient
();
public
:
virtual
int
dumps
(
Srs
Amf0
Object
*
obj
);
virtual
int
dumps
(
Srs
Json
Object
*
obj
);
};
class
SrsStatistic
...
...
@@ -226,17 +226,17 @@ public:
/**
* dumps the vhosts to amf0 array.
*/
virtual
int
dumps_vhosts
(
Srs
Amf0Strict
Array
*
arr
);
virtual
int
dumps_vhosts
(
Srs
Json
Array
*
arr
);
/**
* dumps the streams to amf0 array.
*/
virtual
int
dumps_streams
(
Srs
Amf0Strict
Array
*
arr
);
virtual
int
dumps_streams
(
Srs
Json
Array
*
arr
);
/**
* dumps the clients to amf0 array
* @param start the start index, from 0.
* @param count the max count of clients to dump.
*/
virtual
int
dumps_clients
(
Srs
Amf0Strict
Array
*
arr
,
int
start
,
int
count
);
virtual
int
dumps_clients
(
Srs
Json
Array
*
arr
,
int
start
,
int
count
);
private
:
virtual
SrsStatisticVhost
*
create_vhost
(
SrsRequest
*
req
);
virtual
SrsStatisticStream
*
create_stream
(
SrsStatisticVhost
*
vhost
,
SrsRequest
*
req
);
...
...
trunk/src/app/srs_app_utility.cpp
查看文件 @
3f7e69b
...
...
@@ -1372,7 +1372,7 @@ bool srs_is_boolean(const string& str)
return
str
==
"true"
||
str
==
"false"
;
}
void
srs_api_dump_summaries
(
Srs
Amf0
Object
*
obj
)
void
srs_api_dump_summaries
(
Srs
Json
Object
*
obj
)
{
SrsRusage
*
r
=
srs_get_system_rusage
();
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
&&
d
->
ok
&&
m
->
ok
&&
p
->
ok
&&
nrs
->
ok
);
Srs
Amf0Object
*
data
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
data
=
SrsJson
Any
::
object
();
obj
->
set
(
"data"
,
data
);
data
->
set
(
"ok"
,
SrsAmf0Any
::
boolean
(
ok
));
data
->
set
(
"now_ms"
,
SrsAmf0Any
::
number
(
now
));
data
->
set
(
"ok"
,
SrsJsonAny
::
boolean
(
ok
));
data
->
set
(
"now_ms"
,
SrsJsonAny
::
number
(
now
));
// self
Srs
Amf0Object
*
self
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
self
=
SrsJson
Any
::
object
();
data
->
set
(
"self"
,
self
);
self
->
set
(
"version"
,
SrsAmf0Any
::
str
(
RTMP_SIG_SRS_VERSION
));
self
->
set
(
"pid"
,
SrsAmf0Any
::
number
(
getpid
()));
self
->
set
(
"ppid"
,
SrsAmf0Any
::
number
(
u
->
ppid
));
self
->
set
(
"argv"
,
SrsAmf0Any
::
str
(
_srs_config
->
argv
().
c_str
()));
self
->
set
(
"cwd"
,
SrsAmf0Any
::
str
(
_srs_config
->
cwd
().
c_str
()));
self
->
set
(
"mem_kbyte"
,
SrsAmf0Any
::
number
(
r
->
r
.
ru_maxrss
));
self
->
set
(
"mem_percent"
,
SrsAmf0Any
::
number
(
self_mem_percent
));
self
->
set
(
"cpu_percent"
,
SrsAmf0Any
::
number
(
u
->
percent
));
self
->
set
(
"srs_uptime"
,
SrsAmf0Any
::
number
(
srs_uptime
));
self
->
set
(
"version"
,
SrsJsonAny
::
str
(
RTMP_SIG_SRS_VERSION
));
self
->
set
(
"pid"
,
SrsJsonAny
::
number
(
getpid
()));
self
->
set
(
"ppid"
,
SrsJsonAny
::
number
(
u
->
ppid
));
self
->
set
(
"argv"
,
SrsJsonAny
::
str
(
_srs_config
->
argv
().
c_str
()));
self
->
set
(
"cwd"
,
SrsJsonAny
::
str
(
_srs_config
->
cwd
().
c_str
()));
self
->
set
(
"mem_kbyte"
,
SrsJsonAny
::
number
(
r
->
r
.
ru_maxrss
));
self
->
set
(
"mem_percent"
,
SrsJsonAny
::
number
(
self_mem_percent
));
self
->
set
(
"cpu_percent"
,
SrsJsonAny
::
number
(
u
->
percent
));
self
->
set
(
"srs_uptime"
,
SrsJsonAny
::
number
(
srs_uptime
));
// system
Srs
Amf0Object
*
sys
=
SrsAmf0
Any
::
object
();
Srs
JsonObject
*
sys
=
SrsJson
Any
::
object
();
data
->
set
(
"system"
,
sys
);
sys
->
set
(
"cpu_percent"
,
SrsAmf0Any
::
number
(
s
->
percent
));
sys
->
set
(
"disk_read_KBps"
,
SrsAmf0Any
::
number
(
d
->
in_KBps
));
sys
->
set
(
"disk_write_KBps"
,
SrsAmf0Any
::
number
(
d
->
out_KBps
));
sys
->
set
(
"disk_busy_percent"
,
SrsAmf0Any
::
number
(
d
->
busy
));
sys
->
set
(
"mem_ram_kbyte"
,
SrsAmf0Any
::
number
(
m
->
MemTotal
));
sys
->
set
(
"mem_ram_percent"
,
SrsAmf0Any
::
number
(
m
->
percent_ram
));
sys
->
set
(
"mem_swap_kbyte"
,
SrsAmf0Any
::
number
(
m
->
SwapTotal
));
sys
->
set
(
"mem_swap_percent"
,
SrsAmf0Any
::
number
(
m
->
percent_swap
));
sys
->
set
(
"cpus"
,
SrsAmf0Any
::
number
(
c
->
nb_processors
));
sys
->
set
(
"cpus_online"
,
SrsAmf0Any
::
number
(
c
->
nb_processors_online
));
sys
->
set
(
"uptime"
,
SrsAmf0Any
::
number
(
p
->
os_uptime
));
sys
->
set
(
"ilde_time"
,
SrsAmf0Any
::
number
(
p
->
os_ilde_time
));
sys
->
set
(
"load_1m"
,
SrsAmf0Any
::
number
(
p
->
load_one_minutes
));
sys
->
set
(
"load_5m"
,
SrsAmf0Any
::
number
(
p
->
load_five_minutes
));
sys
->
set
(
"load_15m"
,
SrsAmf0Any
::
number
(
p
->
load_fifteen_minutes
));
sys
->
set
(
"cpu_percent"
,
SrsJsonAny
::
number
(
s
->
percent
));
sys
->
set
(
"disk_read_KBps"
,
SrsJsonAny
::
number
(
d
->
in_KBps
));
sys
->
set
(
"disk_write_KBps"
,
SrsJsonAny
::
number
(
d
->
out_KBps
));
sys
->
set
(
"disk_busy_percent"
,
SrsJsonAny
::
number
(
d
->
busy
));
sys
->
set
(
"mem_ram_kbyte"
,
SrsJsonAny
::
number
(
m
->
MemTotal
));
sys
->
set
(
"mem_ram_percent"
,
SrsJsonAny
::
number
(
m
->
percent_ram
));
sys
->
set
(
"mem_swap_kbyte"
,
SrsJsonAny
::
number
(
m
->
SwapTotal
));
sys
->
set
(
"mem_swap_percent"
,
SrsJsonAny
::
number
(
m
->
percent_swap
));
sys
->
set
(
"cpus"
,
SrsJsonAny
::
number
(
c
->
nb_processors
));
sys
->
set
(
"cpus_online"
,
SrsJsonAny
::
number
(
c
->
nb_processors_online
));
sys
->
set
(
"uptime"
,
SrsJsonAny
::
number
(
p
->
os_uptime
));
sys
->
set
(
"ilde_time"
,
SrsJsonAny
::
number
(
p
->
os_ilde_time
));
sys
->
set
(
"load_1m"
,
SrsJsonAny
::
number
(
p
->
load_one_minutes
));
sys
->
set
(
"load_5m"
,
SrsJsonAny
::
number
(
p
->
load_five_minutes
));
sys
->
set
(
"load_15m"
,
SrsJsonAny
::
number
(
p
->
load_fifteen_minutes
));
// system network bytes stat.
sys
->
set
(
"net_sample_time"
,
Srs
Amf0
Any
::
number
(
n_sample_time
));
sys
->
set
(
"net_sample_time"
,
Srs
Json
Any
::
number
(
n_sample_time
));
// internet public address network device bytes.
sys
->
set
(
"net_recv_bytes"
,
SrsAmf0Any
::
number
(
nr_bytes
));
sys
->
set
(
"net_send_bytes"
,
SrsAmf0Any
::
number
(
ns_bytes
));
sys
->
set
(
"net_recv_bytes"
,
SrsJsonAny
::
number
(
nr_bytes
));
sys
->
set
(
"net_send_bytes"
,
SrsJsonAny
::
number
(
ns_bytes
));
// intranet private address network device bytes.
sys
->
set
(
"net_recvi_bytes"
,
SrsAmf0Any
::
number
(
nri_bytes
));
sys
->
set
(
"net_sendi_bytes"
,
SrsAmf0Any
::
number
(
nsi_bytes
));
sys
->
set
(
"net_recvi_bytes"
,
SrsJsonAny
::
number
(
nri_bytes
));
sys
->
set
(
"net_sendi_bytes"
,
SrsJsonAny
::
number
(
nsi_bytes
));
// srs network bytes stat.
sys
->
set
(
"srs_sample_time"
,
SrsAmf0Any
::
number
(
nrs
->
sample_time
));
sys
->
set
(
"srs_recv_bytes"
,
SrsAmf0Any
::
number
(
nrs
->
rbytes
));
sys
->
set
(
"srs_send_bytes"
,
SrsAmf0Any
::
number
(
nrs
->
sbytes
));
sys
->
set
(
"conn_sys"
,
SrsAmf0Any
::
number
(
nrs
->
nb_conn_sys
));
sys
->
set
(
"conn_sys_et"
,
SrsAmf0Any
::
number
(
nrs
->
nb_conn_sys_et
));
sys
->
set
(
"conn_sys_tw"
,
SrsAmf0Any
::
number
(
nrs
->
nb_conn_sys_tw
));
sys
->
set
(
"conn_sys_udp"
,
SrsAmf0Any
::
number
(
nrs
->
nb_conn_sys_udp
));
sys
->
set
(
"conn_srs"
,
SrsAmf0Any
::
number
(
nrs
->
nb_conn_srs
));
sys
->
set
(
"srs_sample_time"
,
SrsJsonAny
::
number
(
nrs
->
sample_time
));
sys
->
set
(
"srs_recv_bytes"
,
SrsJsonAny
::
number
(
nrs
->
rbytes
));
sys
->
set
(
"srs_send_bytes"
,
SrsJsonAny
::
number
(
nrs
->
sbytes
));
sys
->
set
(
"conn_sys"
,
SrsJsonAny
::
number
(
nrs
->
nb_conn_sys
));
sys
->
set
(
"conn_sys_et"
,
SrsJsonAny
::
number
(
nrs
->
nb_conn_sys_et
));
sys
->
set
(
"conn_sys_tw"
,
SrsJsonAny
::
number
(
nrs
->
nb_conn_sys_tw
));
sys
->
set
(
"conn_sys_udp"
,
SrsJsonAny
::
number
(
nrs
->
nb_conn_sys_udp
));
sys
->
set
(
"conn_srs"
,
SrsJsonAny
::
number
(
nrs
->
nb_conn_srs
));
}
string
srs_join_vector_string
(
vector
<
string
>&
vs
,
string
separator
)
...
...
trunk/src/app/srs_app_utility.hpp
查看文件 @
3f7e69b
...
...
@@ -41,7 +41,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class
SrsKbps
;
class
SrsStream
;
class
Srs
Amf0
Object
;
class
Srs
Json
Object
;
// client open socket and connect to server.
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
);
// dump summaries for /api/v1/summaries.
extern
void
srs_api_dump_summaries
(
Srs
Amf0
Object
*
obj
);
extern
void
srs_api_dump_summaries
(
Srs
Json
Object
*
obj
);
// join string in vector with indicated separator
extern
std
::
string
srs_join_vector_string
(
std
::
vector
<
std
::
string
>&
vs
,
std
::
string
separator
);
...
...
trunk/src/protocol/srs_protocol_json.cpp
查看文件 @
3f7e69b
...
...
@@ -23,10 +23,60 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_protocol_json.hpp>
#include <sstream>
using
namespace
std
;
#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
////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -267,6 +317,46 @@ SrsJsonArray* SrsJsonAny::to_array()
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
)
{
return
new
SrsJsonString
(
value
);
...
...
@@ -402,6 +492,27 @@ SrsJsonAny* SrsJsonObject::value_at(int index)
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
)
{
if
(
!
value
)
{
...
...
@@ -549,6 +660,32 @@ void SrsJsonArray::add(SrsJsonAny* 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
////////////////////////////////////////////////////////////////////////////////////////////////
...
...
trunk/src/protocol/srs_protocol_json.hpp
查看文件 @
3f7e69b
...
...
@@ -112,6 +112,12 @@ public:
* user must ensure the type is a ecma array, or assert failed.
*/
virtual
SrsJsonArray
*
to_array
();
// json
public:
/**
* convert the amf0 stuff to json.
*/
virtual
std
::
string
to_json
();
public
:
static
SrsJsonAny
*
str
(
const
char
*
value
=
NULL
);
static
SrsJsonAny
*
boolean
(
bool
value
=
false
);
...
...
@@ -145,6 +151,12 @@ public:
virtual
std
::
string
key_at
(
int
index
);
// @remark: max index is count().
virtual
SrsJsonAny
*
value_at
(
int
index
);
// json
public:
/**
* convert the amf0 object to json.
*/
virtual
std
::
string
to_json
();
public
:
virtual
void
set
(
std
::
string
key
,
SrsJsonAny
*
value
);
virtual
SrsJsonAny
*
get_property
(
std
::
string
name
);
...
...
@@ -171,6 +183,14 @@ public:
// @remark: max index is count().
virtual
SrsJsonAny
*
at
(
int
index
);
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
();
};
////////////////////////////////////////////////////////////////////////
...
...
trunk/src/protocol/srs_rtmp_amf0.cpp
查看文件 @
3f7e69b
...
...
@@ -35,55 +35,6 @@ using namespace std;
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
#define RTMP_AMF0_Number 0x00
#define RTMP_AMF0_Boolean 0x01
...
...
@@ -331,60 +282,6 @@ char* SrsAmf0Any::human_print(char** pdata, int* psize)
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
)
{
return
new
SrsAmf0String
(
value
);
...
...
@@ -846,27 +743,6 @@ SrsAmf0Any* SrsAmf0Object::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
()
{
properties
->
clear
();
...
...
@@ -1068,27 +944,6 @@ SrsAmf0Any* SrsAmf0EcmaArray::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
()
{
properties
->
clear
();
...
...
@@ -1264,27 +1119,6 @@ SrsAmf0Any* SrsAmf0StrictArray::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
()
{
properties
.
clear
();
...
...
trunk/src/protocol/srs_rtmp_amf0.hpp
查看文件 @
3f7e69b
...
...
@@ -272,12 +272,6 @@ public:
* @remark user must free the data returned or output by pdata.
*/
virtual
char
*
human_print
(
char
**
pdata
,
int
*
psize
);
// json
public:
/**
* convert the amf0 stuff to json.
*/
virtual
std
::
string
to_json
();
// create AMF0 instance.
public:
/**
...
...
@@ -357,12 +351,6 @@ public:
virtual
int
read
(
SrsStream
*
stream
);
virtual
int
write
(
SrsStream
*
stream
);
virtual
SrsAmf0Any
*
copy
();
// json
public:
/**
* convert the amf0 object to json.
*/
virtual
std
::
string
to_json
();
// properties iteration
public:
/**
...
...
@@ -446,12 +434,6 @@ public:
virtual
int
read
(
SrsStream
*
stream
);
virtual
int
write
(
SrsStream
*
stream
);
virtual
SrsAmf0Any
*
copy
();
// json
public:
/**
* convert the amf0 ecma array to json.
*/
virtual
std
::
string
to_json
();
// properties iteration
public:
/**
...
...
@@ -533,12 +515,6 @@ public:
virtual
int
read
(
SrsStream
*
stream
);
virtual
int
write
(
SrsStream
*
stream
);
virtual
SrsAmf0Any
*
copy
();
// json
public:
/**
* convert the amf0 strict array to json.
*/
virtual
std
::
string
to_json
();
// properties iteration
public:
/**
...
...
请
注册
或
登录
后发表评论