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

support http api json, to PUT/POST, to 0.9.103

This commit is contained in:
winlin 2014-05-18 16:15:35 +08:00
parent b60e8418c6
commit d6355efe22
11 changed files with 358 additions and 43 deletions

View file

@ -184,6 +184,14 @@ string SrsConfDirective::arg2()
return "";
}
void SrsConfDirective::set_arg0(string value)
{
if (args.size() > 0) {
args[0] = value;
}
args.push_back(value);
}
SrsConfDirective* SrsConfDirective::at(int index)
{
return directives.at(index);
@ -529,38 +537,23 @@ int SrsConfig::reload()
// merge config: srs_log_tank
if (!srs_directive_equals(root->get("srs_log_tank"), old_root->get("srs_log_tank"))) {
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
ISrsReloadHandler* subscribe = *it;
if ((ret = subscribe->on_reload_log_tank()) != ERROR_SUCCESS) {
srs_error("notify subscribes reload srs_log_tank failed. ret=%d", ret);
return ret;
}
if ((ret = force_reload_log_tank()) != ERROR_SUCCESS) {
return ret;
}
srs_trace("reload srs_log_tank success.");
}
// merge config: srs_log_level
if (!srs_directive_equals(root->get("srs_log_level"), old_root->get("srs_log_level"))) {
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
ISrsReloadHandler* subscribe = *it;
if ((ret = subscribe->on_reload_log_level()) != ERROR_SUCCESS) {
srs_error("notify subscribes reload srs_log_level failed. ret=%d", ret);
return ret;
}
if ((ret = force_reload_log_level()) != ERROR_SUCCESS) {
return ret;
}
srs_trace("reload srs_log_level success.");
}
// merge config: srs_log_file
if (!srs_directive_equals(root->get("srs_log_file"), old_root->get("srs_log_file"))) {
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
ISrsReloadHandler* subscribe = *it;
if ((ret = subscribe->on_reload_log_file()) != ERROR_SUCCESS) {
srs_error("notify subscribes reload srs_log_file failed. ret=%d", ret);
return ret;
}
if ((ret = force_reload_log_file()) != ERROR_SUCCESS) {
return ret;
}
srs_trace("reload srs_log_file success.");
}
// merge config: pithy_print
@ -593,6 +586,117 @@ int SrsConfig::reload()
return ret;
}
SrsConfDirective* SrsConfig::get_or_create(SrsConfDirective* node, string name)
{
srs_assert(node);
SrsConfDirective* conf = node->get(name);
if (!conf) {
conf = new SrsConfDirective();
conf->name = name;
node->directives.push_back(conf);
}
return conf;
}
bool SrsConfig::set_log_file(string file)
{
if (file == get_log_file()) {
return false;
}
SrsConfDirective* conf = get_or_create(root, "srs_log_file");
srs_assert(conf);
conf->set_arg0(file);
return true;
}
bool SrsConfig::set_log_tank(string tank)
{
if (get_log_tank_file() && tank != "console") {
return false;
}
if (!get_log_tank_file() && tank == "console") {
return false;
}
SrsConfDirective* conf = get_or_create(root, "srs_log_tank");
srs_assert(conf);
conf->set_arg0(tank);
return true;
}
bool SrsConfig::set_log_level(string level)
{
if (level == get_log_level()) {
return false;
}
SrsConfDirective* conf = get_or_create(root, "srs_log_level");
srs_assert(conf);
conf->set_arg0(level);
return true;
}
int SrsConfig::force_reload_log_file()
{
int ret = ERROR_SUCCESS;
std::vector<ISrsReloadHandler*>::iterator it;
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
ISrsReloadHandler* subscribe = *it;
if ((ret = subscribe->on_reload_log_file()) != ERROR_SUCCESS) {
srs_error("notify subscribes reload srs_log_file failed. ret=%d", ret);
return ret;
}
}
srs_trace("reload srs_log_file success.");
return ret;
}
int SrsConfig::force_reload_log_tank()
{
int ret = ERROR_SUCCESS;
std::vector<ISrsReloadHandler*>::iterator it;
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
ISrsReloadHandler* subscribe = *it;
if ((ret = subscribe->on_reload_log_tank()) != ERROR_SUCCESS) {
srs_error("notify subscribes reload srs_log_tank failed. ret=%d", ret);
return ret;
}
}
srs_trace("reload srs_log_tank success.");
return ret;
}
int SrsConfig::force_reload_log_level()
{
int ret = ERROR_SUCCESS;
std::vector<ISrsReloadHandler*>::iterator it;
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
ISrsReloadHandler* subscribe = *it;
if ((ret = subscribe->on_reload_log_level()) != ERROR_SUCCESS) {
srs_error("notify subscribes reload srs_log_level failed. ret=%d", ret);
return ret;
}
}
srs_trace("reload srs_log_level success.");
return ret;
}
int SrsConfig::reload_http_api(SrsConfDirective* old_root)
{
int ret = ERROR_SUCCESS;
@ -1171,13 +1275,13 @@ int SrsConfig::parse_file(const char* filename)
// TODO: check pid.
// check log
std::string log_filename = this->get_srs_log_file();
if (get_srs_log_tank_file() && log_filename.empty()) {
std::string log_filename = this->get_log_file();
if (get_log_tank_file() && log_filename.empty()) {
ret = ERROR_SYSTEM_CONFIG_INVALID;
srs_error("must specifies the file to write log to. ret=%d", ret);
return ret;
}
if (get_srs_log_tank_file()) {
if (get_log_tank_file()) {
srs_trace("write log to file %s", log_filename.c_str());
srs_trace("you can: tailf %s", log_filename.c_str());
srs_trace("@see: %s", SRS_WIKI_URL_LOG);
@ -2293,7 +2397,7 @@ string SrsConfig::get_ingest_input_url(SrsConfDirective* ingest)
return conf->arg0();
}
string SrsConfig::get_srs_log_file()
string SrsConfig::get_log_file()
{
srs_assert(root);
@ -2317,7 +2421,7 @@ string SrsConfig::get_ffmpeg_log_dir()
return conf->arg0();
}
string SrsConfig::get_srs_log_level()
string SrsConfig::get_log_level()
{
srs_assert(root);
@ -2329,7 +2433,7 @@ string SrsConfig::get_srs_log_level()
return conf->arg0();
}
bool SrsConfig::get_srs_log_tank_file()
bool SrsConfig::get_log_tank_file()
{
srs_assert(root);