int SrsApiConfigsLogs::do_process_request(SrsSocket* skt, SrsHttpMessage* req) { int ret = ERROR_SUCCESS; // HTTP GET if (req->is_http_get()) { std::stringstream ss; ss << JOBJECT_START << JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT << JFIELD_ORG("data", JOBJECT_START) << JFIELD_STR("tank", (_srs_config->get_log_tank_file()? "file":"console")) << JFIELD_CONT << JFIELD_STR("level", _srs_config->get_log_level()) << JFIELD_CONT << JFIELD_STR("cwd", _srs_config->cwd()) << JFIELD_CONT << JFIELD_STR("file", _srs_config->get_log_file()) << JOBJECT_END << JOBJECT_END; return res_json(skt, req, ss.str()); } // HTTP PUT srs_trace("http api PUT logs, req is: %s", req->body().c_str()); SrsJsonAny* json = SrsJsonAny::loads(req->body_raw()); SrsAutoFree(SrsJsonAny, json); if (!json) { return response_error(skt, req, ERROR_HTTP_API_LOGS, "invalid PUT json"); } else if (!json->is_object()) { return response_error(skt, req, ERROR_HTTP_API_LOGS, "invalid PUT json logs params"); } SrsJsonObject* o = json->to_object(); SrsJsonAny* prop = NULL; if ((prop = o->ensure_property_string("file")) != NULL && _srs_config->set_log_file(prop->to_str())) { if ((ret = _srs_config->force_reload_log_file()) != ERROR_SUCCESS) { return response_error(skt, req, ret, "reload log file failed"); } srs_warn("http api reload log file to %s", prop->to_str().c_str()); } if ((prop = o->ensure_property_string("tank")) != NULL && _srs_config->set_log_tank(prop->to_str())) { if ((ret = _srs_config->force_reload_log_tank()) != ERROR_SUCCESS) { return response_error(skt, req, ret, "reload log tank failed"); } srs_warn("http api reload log tank to %s", prop->to_str().c_str()); } if ((prop = o->ensure_property_string("level")) != NULL && _srs_config->set_log_level(prop->to_str())) { if ((ret = _srs_config->force_reload_log_level()) != ERROR_SUCCESS) { return response_error(skt, req, ret, "reload log level failed"); } srs_warn("http api reload log level to %s", prop->to_str().c_str()); } return response_error(skt, req, ret, "PUT logs success."); }
int SrsKafkaProducer::on_close(int key) { int ret = ERROR_SUCCESS; if (!enabled) { return ret; } SrsJsonObject* obj = SrsJsonAny::object(); obj->set("msg", SrsJsonAny::str("close")); return worker->execute(new SrsKafkaMessage(this, key, obj)); }
int SrsKafkaProducer::on_client(int key, SrsListenerType type, string ip) { int ret = ERROR_SUCCESS; if (!enabled) { return ret; } SrsJsonObject* obj = SrsJsonAny::object(); obj->set("msg", SrsJsonAny::str("accept")); obj->set("type", SrsJsonAny::integer(type)); obj->set("ip", SrsJsonAny::str(ip.c_str())); return worker->execute(new SrsKafkaMessage(this, key, obj)); }
SrsJsonAny* srs_json_parse_tree_nx_json(const nx_json* node) { if (!node) { return NULL; } switch (node->type) { case NX_JSON_NULL: return SrsJsonAny::null(); case NX_JSON_STRING: return SrsJsonAny::str(node->text_value); case NX_JSON_INTEGER: return SrsJsonAny::ingeter(node->int_value); case NX_JSON_DOUBLE: return SrsJsonAny::number(node->dbl_value); case NX_JSON_BOOL: return SrsJsonAny::boolean(node->int_value != 0); case NX_JSON_OBJECT: { SrsJsonObject* obj = SrsJsonAny::object(); for (nx_json* p = node->child; p != NULL; p = p->next) { SrsJsonAny* value = srs_json_parse_tree_nx_json(p); if (value) { obj->set(p->key, value); } } return obj; } case NX_JSON_ARRAY: { SrsJsonArray* arr = SrsJsonAny::array(); for (nx_json* p = node->child; p != NULL; p = p->next) { SrsJsonAny* value = srs_json_parse_tree_nx_json(p); if (value) { arr->add(value); } } return arr; } } return NULL; }