diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 36ccf02c3..c8677ee27 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -2246,7 +2246,7 @@ srs_error_t SrsConfig::global_to_json(SrsJsonObject* obj) sobjs->set(dir->arg0(), sobj); SrsStatisticVhost* svhost = stat->find_vhost(dir->arg0()); - sobj->set("id", SrsJsonAny::integer(svhost? (double)svhost->id : 0)); + sobj->set("id", SrsJsonAny::str(svhost? svhost->id.c_str() : "")); sobj->set("name", dir->dumps_arg0_to_str()); sobj->set("enabled", SrsJsonAny::boolean(get_vhost_enabled(dir->arg0()))); @@ -2371,7 +2371,7 @@ srs_error_t SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsJsonObject* obj SrsStatistic* stat = SrsStatistic::instance(); SrsStatisticVhost* svhost = stat->find_vhost(vhost->arg0()); - obj->set("id", SrsJsonAny::integer(svhost? (double)svhost->id : 0)); + obj->set("id", SrsJsonAny::str(svhost? svhost->id.c_str() : "")); obj->set("name", vhost->dumps_arg0_to_str()); obj->set("enabled", SrsJsonAny::boolean(get_vhost_enabled(vhost))); diff --git a/trunk/src/app/srs_app_conn.cpp b/trunk/src/app/srs_app_conn.cpp index 4018ac512..53000fe57 100644 --- a/trunk/src/app/srs_app_conn.cpp +++ b/trunk/src/app/srs_app_conn.cpp @@ -200,7 +200,7 @@ srs_error_t SrsConnection::cycle() return srs_success; } -int SrsConnection::srs_id() +string SrsConnection::srs_id() { return trd->cid(); } diff --git a/trunk/src/app/srs_app_conn.hpp b/trunk/src/app/srs_app_conn.hpp index 0ea514a11..b3be2f266 100644 --- a/trunk/src/app/srs_app_conn.hpp +++ b/trunk/src/app/srs_app_conn.hpp @@ -92,7 +92,7 @@ public: virtual srs_error_t cycle(); public: // Get the srs id which identify the client. - virtual int srs_id(); + virtual std::string srs_id(); // Get the remote ip of peer. virtual std::string remote_ip(); // Set connection to expired. diff --git a/trunk/src/app/srs_app_dvr.cpp b/trunk/src/app/srs_app_dvr.cpp index 453ba1dbc..3dae0d1cc 100644 --- a/trunk/src/app/srs_app_dvr.cpp +++ b/trunk/src/app/srs_app_dvr.cpp @@ -533,7 +533,7 @@ srs_error_t SrsDvrMp4Segmenter::close_encoder() return err; } -SrsDvrAsyncCallOnDvr::SrsDvrAsyncCallOnDvr(int c, SrsRequest* r, string p) +SrsDvrAsyncCallOnDvr::SrsDvrAsyncCallOnDvr(std::string c, SrsRequest* r, string p) { cid = c; req = r->copy(); @@ -673,7 +673,7 @@ srs_error_t SrsDvrPlan::on_reap_segment() { srs_error_t err = srs_success; - int cid = _srs_context->get_id(); + std::string cid = _srs_context->get_id(); SrsFragment* fragment = segment->current(); string fullpath = fragment->fullpath(); diff --git a/trunk/src/app/srs_app_dvr.hpp b/trunk/src/app/srs_app_dvr.hpp index 716d45e0e..dc1f35560 100644 --- a/trunk/src/app/srs_app_dvr.hpp +++ b/trunk/src/app/srs_app_dvr.hpp @@ -159,11 +159,11 @@ protected: class SrsDvrAsyncCallOnDvr : public ISrsAsyncCallTask { private: - int cid; + std::string cid; std::string path; SrsRequest* req; public: - SrsDvrAsyncCallOnDvr(int c, SrsRequest* r, std::string p); + SrsDvrAsyncCallOnDvr(std::string c, SrsRequest* r, std::string p); virtual ~SrsDvrAsyncCallOnDvr(); public: virtual srs_error_t call(); diff --git a/trunk/src/app/srs_app_hls.cpp b/trunk/src/app/srs_app_hls.cpp index a4ff08afa..337a8448d 100644 --- a/trunk/src/app/srs_app_hls.cpp +++ b/trunk/src/app/srs_app_hls.cpp @@ -82,7 +82,7 @@ void SrsHlsSegment::config_cipher(unsigned char* key,unsigned char* iv) fw->config_cipher(key, iv); } -SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(int c, SrsRequest* r, string p, string t, string m, string mu, int s, srs_utime_t d) +SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(string c, SrsRequest* r, string p, string t, string m, string mu, int s, srs_utime_t d) { req = r->copy(); cid = c; @@ -137,7 +137,7 @@ string SrsDvrAsyncCallOnHls::to_string() return "on_hls: " + path; } -SrsDvrAsyncCallOnHlsNotify::SrsDvrAsyncCallOnHlsNotify(int c, SrsRequest* r, string u) +SrsDvrAsyncCallOnHlsNotify::SrsDvrAsyncCallOnHlsNotify(string c, SrsRequest* r, string u) { cid = c; req = r->copy(); diff --git a/trunk/src/app/srs_app_hls.hpp b/trunk/src/app/srs_app_hls.hpp index 1dd72eba5..e62b5c70e 100644 --- a/trunk/src/app/srs_app_hls.hpp +++ b/trunk/src/app/srs_app_hls.hpp @@ -80,7 +80,7 @@ public: class SrsDvrAsyncCallOnHls : public ISrsAsyncCallTask { private: - int cid; + std::string cid; std::string path; std::string ts_url; std::string m3u8; @@ -90,7 +90,7 @@ private: srs_utime_t duration; public: // TODO: FIXME: Use TBN 1000. - SrsDvrAsyncCallOnHls(int c, SrsRequest* r, std::string p, std::string t, std::string m, std::string mu, int s, srs_utime_t d); + SrsDvrAsyncCallOnHls(std::string c, SrsRequest* r, std::string p, std::string t, std::string m, std::string mu, int s, srs_utime_t d); virtual ~SrsDvrAsyncCallOnHls(); public: virtual srs_error_t call(); @@ -101,11 +101,11 @@ public: class SrsDvrAsyncCallOnHlsNotify : public ISrsAsyncCallTask { private: - int cid; + std::string cid; std::string ts_url; SrsRequest* req; public: - SrsDvrAsyncCallOnHlsNotify(int c, SrsRequest* r, std::string u); + SrsDvrAsyncCallOnHlsNotify(std::string c, SrsRequest* r, std::string u); virtual ~SrsDvrAsyncCallOnHlsNotify(); public: virtual srs_error_t call(); diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp index 7dff7e946..fd0f57c64 100644 --- a/trunk/src/app/srs_app_http_api.cpp +++ b/trunk/src/app/srs_app_http_api.cpp @@ -699,10 +699,10 @@ srs_error_t SrsGoApiVhosts::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessag // path: {pattern}{vhost_id} // e.g. /api/v1/vhosts/100 pattern= /api/v1/vhosts/, vhost_id=100 - int vid = r->parse_rest_id(entry->pattern); + std::string vid = r->parse_rest_id(entry->pattern); SrsStatisticVhost* vhost = NULL; - if (vid > 0 && (vhost = stat->find_vhost(vid)) == NULL) { + if (vid != "" && (vhost = stat->find_vhost(vid)) == NULL) { return srs_api_response_code(w, r, ERROR_RTMP_VHOST_NOT_FOUND); } @@ -755,10 +755,10 @@ srs_error_t SrsGoApiStreams::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa // path: {pattern}{stream_id} // e.g. /api/v1/streams/100 pattern= /api/v1/streams/, stream_id=100 - int sid = r->parse_rest_id(entry->pattern); + std::string sid = r->parse_rest_id(entry->pattern); SrsStatisticStream* stream = NULL; - if (sid >= 0 && (stream = stat->find_stream(sid)) == NULL) { + if (sid != "" && (stream = stat->find_stream(sid)) == NULL) { return srs_api_response_code(w, r, ERROR_RTMP_STREAM_NOT_FOUND); } @@ -811,10 +811,10 @@ srs_error_t SrsGoApiClients::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa // path: {pattern}{client_id} // e.g. /api/v1/clients/100 pattern= /api/v1/clients/, client_id=100 - int cid = r->parse_rest_id(entry->pattern); + std::string cid = r->parse_rest_id(entry->pattern); SrsStatisticClient* client = NULL; - if (cid >= 0 && (client = stat->find_client(cid)) == NULL) { + if (cid != "" && (client = stat->find_client(cid)) == NULL) { return srs_api_response_code(w, r, ERROR_RTMP_CLIENT_NOT_FOUND); } @@ -854,7 +854,7 @@ srs_error_t SrsGoApiClients::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa } client->conn->expire(); - srs_warn("kickoff client id=%d ok", cid); + srs_warn("kickoff client id=%s ok", cid.c_str()); } else { return srs_go_http_error(w, SRS_CONSTS_HTTP_MethodNotAllowed); } diff --git a/trunk/src/app/srs_app_http_hooks.cpp b/trunk/src/app/srs_app_http_hooks.cpp index 9fc2292c0..daffd531f 100644 --- a/trunk/src/app/srs_app_http_hooks.cpp +++ b/trunk/src/app/srs_app_http_hooks.cpp @@ -60,13 +60,15 @@ srs_error_t SrsHttpHooks::on_connect(string url, SrsRequest* req) { srs_error_t err = srs_success; - int client_id = _srs_context->get_id(); + // TODO: FIXME: check client_id must be int? + std::string client_id = _srs_context->get_id(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_connect")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + // obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -79,12 +81,12 @@ srs_error_t SrsHttpHooks::on_connect(string url, SrsRequest* req) SrsHttpClient http; if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { - return srs_error_wrap(err, "http: on_connect failed, client_id=%d, url=%s, request=%s, response=%s, code=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code); + return srs_error_wrap(err, "http: on_connect failed, client_id=%s, url=%s, request=%s, response=%s, code=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code); } - srs_trace("http: on_connect ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_connect ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return err; } @@ -93,13 +95,13 @@ void SrsHttpHooks::on_close(string url, SrsRequest* req, int64_t send_bytes, int { srs_error_t err = srs_success; - int client_id = _srs_context->get_id(); + std::string client_id = _srs_context->get_id(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_close")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -114,13 +116,13 @@ void SrsHttpHooks::on_close(string url, SrsRequest* req, int64_t send_bytes, int if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { int ret = srs_error_code(err); srs_freep(err); - srs_warn("http: ignore on_close failed, client_id=%d, url=%s, request=%s, response=%s, code=%d, ret=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code, ret); + srs_warn("http: ignore on_close failed, client_id=%s, url=%s, request=%s, response=%s, code=%d, ret=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code, ret); return; } - srs_trace("http: on_close ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_close ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return; } @@ -129,13 +131,13 @@ srs_error_t SrsHttpHooks::on_publish(string url, SrsRequest* req) { srs_error_t err = srs_success; - int client_id = _srs_context->get_id(); + std::string client_id = _srs_context->get_id(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_publish")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -149,12 +151,12 @@ srs_error_t SrsHttpHooks::on_publish(string url, SrsRequest* req) SrsHttpClient http; if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { - return srs_error_wrap(err, "http: on_publish failed, client_id=%d, url=%s, request=%s, response=%s, code=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code); + return srs_error_wrap(err, "http: on_publish failed, client_id=%s, url=%s, request=%s, response=%s, code=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code); } - srs_trace("http: on_publish ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_publish ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return err; } @@ -163,13 +165,13 @@ void SrsHttpHooks::on_unpublish(string url, SrsRequest* req) { srs_error_t err = srs_success; - int client_id = _srs_context->get_id(); + std::string client_id = _srs_context->get_id(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_unpublish")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -184,13 +186,13 @@ void SrsHttpHooks::on_unpublish(string url, SrsRequest* req) if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { int ret = srs_error_code(err); srs_freep(err); - srs_warn("http: ignore on_unpublish failed, client_id=%d, url=%s, request=%s, response=%s, status=%d, ret=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code, ret); + srs_warn("http: ignore on_unpublish failed, client_id=%s, url=%s, request=%s, response=%s, status=%d, ret=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code, ret); return; } - srs_trace("http: on_unpublish ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_unpublish ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return; } @@ -199,13 +201,13 @@ srs_error_t SrsHttpHooks::on_play(string url, SrsRequest* req) { srs_error_t err = srs_success; - int client_id = _srs_context->get_id(); + std::string client_id = _srs_context->get_id(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_play")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -219,12 +221,12 @@ srs_error_t SrsHttpHooks::on_play(string url, SrsRequest* req) SrsHttpClient http; if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { - return srs_error_wrap(err, "http: on_play failed, client_id=%d, url=%s, request=%s, response=%s, status=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code); + return srs_error_wrap(err, "http: on_play failed, client_id=%s, url=%s, request=%s, response=%s, status=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code); } - srs_trace("http: on_play ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_play ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return err; } @@ -233,13 +235,13 @@ void SrsHttpHooks::on_stop(string url, SrsRequest* req) { srs_error_t err = srs_success; - int client_id = _srs_context->get_id(); + std::string client_id = _srs_context->get_id(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_stop")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -254,29 +256,29 @@ void SrsHttpHooks::on_stop(string url, SrsRequest* req) if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { int ret = srs_error_code(err); srs_freep(err); - srs_warn("http: ignore on_stop failed, client_id=%d, url=%s, request=%s, response=%s, code=%d, ret=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code, ret); + srs_warn("http: ignore on_stop failed, client_id=%s, url=%s, request=%s, response=%s, code=%d, ret=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code, ret); return; } - srs_trace("http: on_stop ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_stop ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return; } -srs_error_t SrsHttpHooks::on_dvr(int cid, string url, SrsRequest* req, string file) +srs_error_t SrsHttpHooks::on_dvr(std::string cid, string url, SrsRequest* req, string file) { srs_error_t err = srs_success; - int client_id = cid; + std::string client_id = cid; std::string cwd = _srs_config->cwd(); SrsJsonObject* obj = SrsJsonAny::object(); SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_dvr")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -291,21 +293,21 @@ srs_error_t SrsHttpHooks::on_dvr(int cid, string url, SrsRequest* req, string fi SrsHttpClient http; if ((err = do_post(&http, url, data, status_code, res)) != srs_success) { - return srs_error_wrap(err, "http post on_dvr uri failed, client_id=%d, url=%s, request=%s, response=%s, code=%d", - client_id, url.c_str(), data.c_str(), res.c_str(), status_code); + return srs_error_wrap(err, "http post on_dvr uri failed, client_id=%s, url=%s, request=%s, response=%s, code=%d", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str(), status_code); } - srs_trace("http hook on_dvr success. client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http hook on_dvr success. client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return err; } -srs_error_t SrsHttpHooks::on_hls(int cid, string url, SrsRequest* req, string file, string ts_url, string m3u8, string m3u8_url, int sn, srs_utime_t duration) +srs_error_t SrsHttpHooks::on_hls(std::string cid, string url, SrsRequest* req, string file, string ts_url, string m3u8, string m3u8_url, int sn, srs_utime_t duration) { srs_error_t err = srs_success; - int client_id = cid; + std::string client_id = cid; std::string cwd = _srs_config->cwd(); // the ts_url is under the same dir of m3u8_url. @@ -318,7 +320,7 @@ srs_error_t SrsHttpHooks::on_hls(int cid, string url, SrsRequest* req, string fi SrsAutoFree(SrsJsonObject, obj); obj->set("action", SrsJsonAny::str("on_hls")); - obj->set("client_id", SrsJsonAny::integer(client_id)); + obj->set("client_id", SrsJsonAny::str(client_id.c_str())); 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())); @@ -341,17 +343,17 @@ srs_error_t SrsHttpHooks::on_hls(int cid, string url, SrsRequest* req, string fi return srs_error_wrap(err, "http: post %s with %s, status=%d, res=%s", url.c_str(), data.c_str(), status_code, res.c_str()); } - srs_trace("http: on_hls ok, client_id=%d, url=%s, request=%s, response=%s", - client_id, url.c_str(), data.c_str(), res.c_str()); + srs_trace("http: on_hls ok, client_id=%s, url=%s, request=%s, response=%s", + client_id.c_str(), url.c_str(), data.c_str(), res.c_str()); return err; } -srs_error_t SrsHttpHooks::on_hls_notify(int cid, std::string url, SrsRequest* req, std::string ts_url, int nb_notify) +srs_error_t SrsHttpHooks::on_hls_notify(std::string cid, std::string url, SrsRequest* req, std::string ts_url, int nb_notify) { srs_error_t err = srs_success; - int client_id = cid; + std::string client_id = cid; std::string cwd = _srs_config->cwd(); if (srs_string_is_http(ts_url)) { @@ -406,8 +408,8 @@ srs_error_t SrsHttpHooks::on_hls_notify(int cid, std::string url, SrsRequest* re } int spenttime = (int)(srsu2ms(srs_update_system_time()) - starttime); - srs_trace("http hook on_hls_notify success. client_id=%d, url=%s, code=%d, spent=%dms, read=%dB, err=%s", - client_id, url.c_str(), msg->status_code(), spenttime, nb_read, srs_error_desc(err).c_str()); + srs_trace("http hook on_hls_notify success. client_id=%s, url=%s, code=%d, spent=%dms, read=%dB, err=%s", + client_id.c_str(), url.c_str(), msg->status_code(), spenttime, nb_read, srs_error_desc(err).c_str()); // ignore any error for on_hls_notify. srs_error_reset(err); diff --git a/trunk/src/app/srs_app_http_hooks.hpp b/trunk/src/app/srs_app_http_hooks.hpp index 000780c44..361957c21 100644 --- a/trunk/src/app/srs_app_http_hooks.hpp +++ b/trunk/src/app/srs_app_http_hooks.hpp @@ -74,7 +74,7 @@ public: // ignore if empty. // @param file the file path, can be relative or absolute path. // @param cid the source connection cid, for the on_dvr is async call. - static srs_error_t on_dvr(int cid, std::string url, SrsRequest* req, std::string file); + static srs_error_t on_dvr(std::string cid, std::string url, SrsRequest* req, std::string file); // When hls reap segment, callback. // @param url the api server url, to process the event. // ignore if empty. @@ -85,7 +85,7 @@ public: // @param sn the seq_no, the sequence number of ts in hls/m3u8. // @param duration the segment duration in srs_utime_t. // @param cid the source connection cid, for the on_dvr is async call. - static srs_error_t on_hls(int cid, std::string url, SrsRequest* req, std::string file, std::string ts_url, + static srs_error_t on_hls(std::string cid, std::string url, SrsRequest* req, std::string file, std::string ts_url, std::string m3u8, std::string m3u8_url, int sn, srs_utime_t duration); // When hls reap segment, callback. // @param url the api server url, to process the event. @@ -93,7 +93,7 @@ public: // @param ts_url the ts uri, used to replace the variable [ts_url] in url. // @param nb_notify the max bytes to read from notify server. // @param cid the source connection cid, for the on_dvr is async call. - static srs_error_t on_hls_notify(int cid, std::string url, SrsRequest* req, std::string ts_url, int nb_notify); + static srs_error_t on_hls_notify(std::string cid, std::string url, SrsRequest* req, std::string ts_url, int nb_notify); // Discover co-workers for origin cluster. static srs_error_t discover_co_workers(std::string url, std::string& host, int& port); private: diff --git a/trunk/src/app/srs_app_http_stream.cpp b/trunk/src/app/srs_app_http_stream.cpp index 4afe83f3e..9bbb4a6b1 100755 --- a/trunk/src/app/srs_app_http_stream.cpp +++ b/trunk/src/app/srs_app_http_stream.cpp @@ -1141,8 +1141,8 @@ srs_error_t SrsHttpStreamServer::hijack(ISrsHttpMessage* request, ISrsHttpHandle // trigger edge to fetch from origin. bool vhost_is_edge = _srs_config->get_vhost_is_edge(r->vhost); - srs_trace("flv: source url=%s, is_edge=%d, source_id=[%d][%d]", - r->get_stream_url().c_str(), vhost_is_edge, ::getpid(), s->source_id()); + srs_trace("flv: source url=%s, is_edge=%d, source_id=[%d][%s]", + r->get_stream_url().c_str(), vhost_is_edge, ::getpid(), s->source_id().c_str()); return err; } diff --git a/trunk/src/app/srs_app_log.cpp b/trunk/src/app/srs_app_log.cpp index 4d73ebf8e..0671bfb9f 100644 --- a/trunk/src/app/srs_app_log.cpp +++ b/trunk/src/app/srs_app_log.cpp @@ -94,7 +94,7 @@ void SrsFastLog::reopen() open_log_file(); } -void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) +void SrsFastLog::verbose(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelVerbose) { return; @@ -114,7 +114,7 @@ void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) write_log(fd, log_data, size, SrsLogLevelVerbose); } -void SrsFastLog::info(const char* tag, int context_id, const char* fmt, ...) +void SrsFastLog::info(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelInfo) { return; @@ -134,7 +134,7 @@ void SrsFastLog::info(const char* tag, int context_id, const char* fmt, ...) write_log(fd, log_data, size, SrsLogLevelInfo); } -void SrsFastLog::trace(const char* tag, int context_id, const char* fmt, ...) +void SrsFastLog::trace(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelTrace) { return; @@ -154,7 +154,7 @@ void SrsFastLog::trace(const char* tag, int context_id, const char* fmt, ...) write_log(fd, log_data, size, SrsLogLevelTrace); } -void SrsFastLog::warn(const char* tag, int context_id, const char* fmt, ...) +void SrsFastLog::warn(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelWarn) { return; @@ -174,7 +174,7 @@ void SrsFastLog::warn(const char* tag, int context_id, const char* fmt, ...) write_log(fd, log_data, size, SrsLogLevelWarn); } -void SrsFastLog::error(const char* tag, int context_id, const char* fmt, ...) +void SrsFastLog::error(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelError) { return; diff --git a/trunk/src/app/srs_app_log.hpp b/trunk/src/app/srs_app_log.hpp index f54ceb29f..81a9e1696 100644 --- a/trunk/src/app/srs_app_log.hpp +++ b/trunk/src/app/srs_app_log.hpp @@ -55,11 +55,11 @@ public: public: virtual srs_error_t initialize(); virtual void reopen(); - virtual void verbose(const char* tag, int context_id, const char* fmt, ...); - virtual void info(const char* tag, int context_id, const char* fmt, ...); - virtual void trace(const char* tag, int context_id, const char* fmt, ...); - virtual void warn(const char* tag, int context_id, const char* fmt, ...); - virtual void error(const char* tag, int context_id, const char* fmt, ...); + virtual void verbose(const char* tag, const char* context_id, const char* fmt, ...); + virtual void info(const char* tag, const char* context_id, const char* fmt, ...); + virtual void trace(const char* tag, const char* context_id, const char* fmt, ...); + virtual void warn(const char* tag, const char* context_id, const char* fmt, ...); + virtual void error(const char* tag, const char* context_id, const char* fmt, ...); // Interface ISrsReloadHandler. public: virtual srs_error_t on_reload_utc_time(); diff --git a/trunk/src/app/srs_app_process.cpp b/trunk/src/app/srs_app_process.cpp index 0f12f493d..61fb644a6 100644 --- a/trunk/src/app/srs_app_process.cpp +++ b/trunk/src/app/srs_app_process.cpp @@ -180,7 +180,7 @@ srs_error_t SrsProcess::start() srs_info("fork process: %s", cli.c_str()); // for log - int cid = _srs_context->get_id(); + std::string cid = _srs_context->get_id(); int ppid = getpid(); // TODO: fork or vfork? @@ -221,8 +221,8 @@ srs_error_t SrsProcess::start() // log basic info to stderr. if (true) { fprintf(stdout, "\n"); - fprintf(stdout, "process ppid=%d, cid=%d, pid=%d, in=%d, out=%d, err=%d\n", - ppid, cid, getpid(), STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO); + fprintf(stdout, "process ppid=%d, cid=%s, pid=%d, in=%d, out=%d, err=%d\n", + ppid, cid.c_str(), getpid(), STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO); fprintf(stdout, "process binary=%s, cli: %s\n", bin.c_str(), cli.c_str()); fprintf(stdout, "process actual cli: %s\n", actual_cli.c_str()); } diff --git a/trunk/src/app/srs_app_recv_thread.cpp b/trunk/src/app/srs_app_recv_thread.cpp index 214c42aa1..63933cde4 100644 --- a/trunk/src/app/srs_app_recv_thread.cpp +++ b/trunk/src/app/srs_app_recv_thread.cpp @@ -57,7 +57,7 @@ ISrsMessagePumper::~ISrsMessagePumper() { } -SrsRecvThread::SrsRecvThread(ISrsMessagePumper* p, SrsRtmpServer* r, srs_utime_t tm, int parent_cid) +SrsRecvThread::SrsRecvThread(ISrsMessagePumper* p, SrsRtmpServer* r, srs_utime_t tm, std::string parent_cid) { rtmp = r; pumper = p; @@ -71,7 +71,7 @@ SrsRecvThread::~SrsRecvThread() srs_freep(trd); } -int SrsRecvThread::cid() +std::string SrsRecvThread::cid() { return trd->cid(); } @@ -161,7 +161,7 @@ srs_error_t SrsRecvThread::do_cycle() return err; } -SrsQueueRecvThread::SrsQueueRecvThread(SrsConsumer* consumer, SrsRtmpServer* rtmp_sdk, srs_utime_t tm, int parent_cid) +SrsQueueRecvThread::SrsQueueRecvThread(SrsConsumer* consumer, SrsRtmpServer* rtmp_sdk, srs_utime_t tm, std::string parent_cid) : trd(this, rtmp_sdk, tm, parent_cid) { _consumer = consumer; @@ -278,7 +278,7 @@ void SrsQueueRecvThread::on_stop() } SrsPublishRecvThread::SrsPublishRecvThread(SrsRtmpServer* rtmp_sdk, SrsRequest* _req, - int mr_sock_fd, srs_utime_t tm, SrsRtmpConn* conn, SrsSource* source, int parent_cid) + int mr_sock_fd, srs_utime_t tm, SrsRtmpConn* conn, SrsSource* source, std::string parent_cid) : trd(this, rtmp_sdk, tm, parent_cid) { rtmp = rtmp_sdk; @@ -290,7 +290,7 @@ SrsPublishRecvThread::SrsPublishRecvThread(SrsRtmpServer* rtmp_sdk, SrsRequest* _nb_msgs = 0; video_frames = 0; error = srs_cond_new(); - ncid = cid = 0; + ncid = cid = ""; req = _req; mr_fd = mr_sock_fd; @@ -341,12 +341,12 @@ srs_error_t SrsPublishRecvThread::error_code() return srs_error_copy(recv_error); } -void SrsPublishRecvThread::set_cid(int v) +void SrsPublishRecvThread::set_cid(std::string v) { ncid = v; } -int SrsPublishRecvThread::get_cid() +std::string SrsPublishRecvThread::get_cid() { return ncid; } diff --git a/trunk/src/app/srs_app_recv_thread.hpp b/trunk/src/app/srs_app_recv_thread.hpp index 2a27a7319..3ee4f53e4 100644 --- a/trunk/src/app/srs_app_recv_thread.hpp +++ b/trunk/src/app/srs_app_recv_thread.hpp @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -80,16 +81,16 @@ protected: SrsCoroutine* trd; ISrsMessagePumper* pumper; SrsRtmpServer* rtmp; - int _parent_cid; + std::string _parent_cid; // The recv timeout in srs_utime_t. srs_utime_t timeout; public: // Constructor. // @param tm The receive timeout in srs_utime_t. - SrsRecvThread(ISrsMessagePumper* p, SrsRtmpServer* r, srs_utime_t tm, int parent_cid); + SrsRecvThread(ISrsMessagePumper* p, SrsRtmpServer* r, srs_utime_t tm, std::string parent_cid); virtual ~SrsRecvThread(); public: - virtual int cid(); + virtual std::string cid(); public: virtual srs_error_t start(); virtual void stop(); @@ -116,7 +117,7 @@ private: SrsConsumer* _consumer; public: // TODO: FIXME: Refine timeout in time unit. - SrsQueueRecvThread(SrsConsumer* consumer, SrsRtmpServer* rtmp_sdk, srs_utime_t tm, int parent_cid); + SrsQueueRecvThread(SrsConsumer* consumer, SrsRtmpServer* rtmp_sdk, srs_utime_t tm, std::string parent_cid); virtual ~SrsQueueRecvThread(); public: virtual srs_error_t start(); @@ -167,11 +168,11 @@ private: // @see https://github.com/ossrs/srs/issues/244 srs_cond_t error; // The merged context id. - int cid; - int ncid; + std::string cid; + std::string ncid; public: SrsPublishRecvThread(SrsRtmpServer* rtmp_sdk, SrsRequest* _req, - int mr_sock_fd, srs_utime_t tm, SrsRtmpConn* conn, SrsSource* source, int parent_cid); + int mr_sock_fd, srs_utime_t tm, SrsRtmpConn* conn, SrsSource* source, std::string parent_cid); virtual ~SrsPublishRecvThread(); public: // Wait for error for some timeout. @@ -179,8 +180,8 @@ public: virtual int64_t nb_msgs(); virtual uint64_t nb_video_frames(); virtual srs_error_t error_code(); - virtual void set_cid(int v); - virtual int get_cid(); + virtual void set_cid(std::string v); + virtual std::string get_cid(); public: virtual srs_error_t start(); virtual void stop(); diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index ece2dccbc..e592d5341 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -487,7 +487,7 @@ SrsRtcOutgoingInfo::~SrsRtcOutgoingInfo() { } -SrsRtcPlayer::SrsRtcPlayer(SrsRtcSession* s, int parent_cid) +SrsRtcPlayer::SrsRtcPlayer(SrsRtcSession* s, string parent_cid) { _parent_cid = parent_cid; trd = new SrsDummyCoroutine(); @@ -575,7 +575,7 @@ srs_error_t SrsRtcPlayer::on_reload_vhost_realtime(string vhost) return on_reload_vhost_play(vhost); } -int SrsRtcPlayer::cid() +std::string SrsRtcPlayer::cid() { return trd->cid(); } @@ -629,8 +629,8 @@ srs_error_t SrsRtcPlayer::cycle() realtime = _srs_config->get_realtime_enabled(req->vhost, true); mw_msgs = _srs_config->get_mw_msgs(req->vhost, realtime, true); - srs_trace("RTC source url=%s, source_id=[%d][%d], encrypt=%d, realtime=%d, mw_msgs=%d", req->get_stream_url().c_str(), - ::getpid(), source->source_id(), session_->encrypt, realtime, mw_msgs); + srs_trace("RTC source url=%s, source_id=[%d][%s], encrypt=%d, realtime=%d, mw_msgs=%d", req->get_stream_url().c_str(), + ::getpid(), source->source_id().c_str(), session_->encrypt, realtime, mw_msgs); SrsPithyPrint* pprint = SrsPithyPrint::create_rtc_play(); SrsAutoFree(SrsPithyPrint, pprint); @@ -1939,9 +1939,9 @@ block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ void SrsRtcPublisher::request_keyframe() { - int scid = _srs_context->get_id(); - int pcid = session_->context_id(); - srs_trace("RTC play=[%d][%d] request keyframe from publish=[%d][%d]", ::getpid(), scid, ::getpid(), pcid); + std::string scid = _srs_context->get_id(); + std::string pcid = session_->context_id(); + srs_trace("RTC play=[%d][%s] request keyframe from publish=[%d][%s]", ::getpid(), scid.c_str(), ::getpid(), pcid.c_str()); request_keyframe_ = true; } @@ -1975,7 +1975,7 @@ void SrsRtcPublisher::simulate_drop_packet(SrsRtpHeader* h, int nn_bytes) SrsRtcSession::SrsRtcSession(SrsRtcServer* s) { req = NULL; - cid = 0; + cid = ""; is_publisher_ = false; encrypt = true; @@ -2068,12 +2068,12 @@ void SrsRtcSession::switch_to_context() _srs_context->set_id(cid); } -int SrsRtcSession::context_id() +std::string SrsRtcSession::context_id() { return cid; } -srs_error_t SrsRtcSession::initialize(SrsRtcSource* source, SrsRequest* r, bool is_publisher, string username, int context_id) +srs_error_t SrsRtcSession::initialize(SrsRtcSource* source, SrsRequest* r, bool is_publisher, string username, std::string context_id) { srs_error_t err = srs_success; diff --git a/trunk/src/app/srs_app_rtc_conn.hpp b/trunk/src/app/srs_app_rtc_conn.hpp index 228dac6e7..39df677c4 100644 --- a/trunk/src/app/srs_app_rtc_conn.hpp +++ b/trunk/src/app/srs_app_rtc_conn.hpp @@ -189,7 +189,7 @@ public: class SrsRtcPlayer : virtual public ISrsCoroutineHandler, virtual public ISrsReloadHandler { protected: - int _parent_cid; + std::string _parent_cid; SrsCoroutine* trd; SrsRtcSession* session_; private: @@ -217,7 +217,7 @@ private: // Whether keep original sequence number. bool keep_sequence_; public: - SrsRtcPlayer(SrsRtcSession* s, int parent_cid); + SrsRtcPlayer(SrsRtcSession* s, std::string parent_cid); virtual ~SrsRtcPlayer(); public: srs_error_t initialize(const uint32_t& vssrc, const uint32_t& assrc, const uint16_t& v_pt, const uint16_t& a_pt); @@ -226,7 +226,7 @@ public: virtual srs_error_t on_reload_vhost_play(std::string vhost); virtual srs_error_t on_reload_vhost_realtime(std::string vhost); public: - virtual int cid(); + virtual std::string cid(); public: virtual srs_error_t start(); virtual void stop(); @@ -344,7 +344,7 @@ private: srs_utime_t last_stun_time; private: // For each RTC session, we use a specified cid for debugging logs. - int cid; + std::string cid; // For each RTC session, whether requires encrypt. // Read config value, rtc_server.encrypt, default to on. // Sepcifies by HTTP API, query encrypt, optional. @@ -379,9 +379,9 @@ public: std::string username(); void set_encrypt(bool v); void switch_to_context(); - int context_id(); + std::string context_id(); public: - srs_error_t initialize(SrsRtcSource* source, SrsRequest* r, bool is_publisher, std::string username, int context_id); + srs_error_t initialize(SrsRtcSource* source, SrsRequest* r, bool is_publisher, std::string username, std::string context_id); // The peer address may change, we can identify that by STUN messages. srs_error_t on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* r); srs_error_t on_dtls(char* data, int nb_data); diff --git a/trunk/src/app/srs_app_rtc_server.cpp b/trunk/src/app/srs_app_rtc_server.cpp index ffcf0d3aa..673165e4e 100644 --- a/trunk/src/app/srs_app_rtc_server.cpp +++ b/trunk/src/app/srs_app_rtc_server.cpp @@ -320,7 +320,7 @@ srs_error_t SrsRtcServer::create_session( } } - int cid = _srs_context->get_id(); + std::string cid = _srs_context->get_id(); SrsRtcSession* session = new SrsRtcSession(this); if ((err = session->initialize(source, req, publish, username, cid)) != srs_success) { srs_freep(session); @@ -396,7 +396,7 @@ srs_error_t SrsRtcServer::setup_session2(SrsRtcSession* session, SrsRequest* req // TODO: FIXME: Collision detect. string username = session->get_local_sdp()->get_ice_ufrag() + ":" + remote_sdp.get_ice_ufrag(); - int cid = _srs_context->get_id(); + std::string cid = _srs_context->get_id(); if ((err = session->initialize(source, req, false, username, cid)) != srs_success) { return srs_error_wrap(err, "init"); } diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index ac62ed417..b41d6cb48 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -137,7 +137,7 @@ srs_error_t SrsRtcConsumer::dump_packets(std::vector& pkts) srs_error_t err = srs_success; if (should_update_source_id) { - srs_trace("update source_id=%d[%d]", source->source_id(), source->source_id()); + srs_trace("update source_id=%d[%d]", source->source_id().c_str(), source->source_id().c_str()); should_update_source_id = false; } @@ -242,7 +242,7 @@ ISrsRtcPublisher::~ISrsRtcPublisher() SrsRtcSource::SrsRtcSource() { - _source_id = _pre_source_id = -1; + _source_id = _pre_source_id = ""; _can_publish = true; rtc_publisher_ = NULL; @@ -278,7 +278,7 @@ void SrsRtcSource::update_auth(SrsRequest* r) req->update_auth(r); } -srs_error_t SrsRtcSource::on_source_id_changed(int id) +srs_error_t SrsRtcSource::on_source_id_changed(std::string id) { srs_error_t err = srs_success; @@ -286,7 +286,7 @@ srs_error_t SrsRtcSource::on_source_id_changed(int id) return err; } - if (_pre_source_id == -1) { + if (_pre_source_id == "") { _pre_source_id = id; } else if (_pre_source_id != _source_id) { _pre_source_id = _source_id; @@ -304,12 +304,12 @@ srs_error_t SrsRtcSource::on_source_id_changed(int id) return err; } -int SrsRtcSource::source_id() +std::string SrsRtcSource::source_id() { return _source_id; } -int SrsRtcSource::pre_source_id() +std::string SrsRtcSource::pre_source_id() { return _pre_source_id; } diff --git a/trunk/src/app/srs_app_rtc_source.hpp b/trunk/src/app/srs_app_rtc_source.hpp index cc9f74986..4f370f381 100644 --- a/trunk/src/app/srs_app_rtc_source.hpp +++ b/trunk/src/app/srs_app_rtc_source.hpp @@ -109,9 +109,9 @@ private: // For edge, it's the edge ingest id. // when source id changed, for example, the edge reconnect, // invoke the on_source_id_changed() to let all clients know. - int _source_id; + std::string _source_id; // previous source id. - int _pre_source_id; + std::string _pre_source_id; SrsRequest* req; ISrsRtcPublisher* rtc_publisher_; // Transmux RTMP to RTC. @@ -129,10 +129,10 @@ public: // Update the authentication information in request. virtual void update_auth(SrsRequest* r); // The source id changed. - virtual srs_error_t on_source_id_changed(int id); + virtual srs_error_t on_source_id_changed(std::string id); // Get current source id. - virtual int source_id(); - virtual int pre_source_id(); + virtual std::string source_id(); + virtual std::string pre_source_id(); // Get the bridger. ISrsSourceBridger* bridger(); public: diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp index 72b6f1227..bf3c7f7d8 100644 --- a/trunk/src/app/srs_app_rtmp_conn.cpp +++ b/trunk/src/app/srs_app_rtmp_conn.cpp @@ -515,8 +515,8 @@ srs_error_t SrsRtmpConn::stream_service_cycle() } bool enabled_cache = _srs_config->get_gop_cache(req->vhost); - srs_trace("source url=%s, ip=%s, cache=%d, is_edge=%d, source_id=[%d][%d]", - req->get_stream_url().c_str(), ip.c_str(), enabled_cache, info->edge, ::getpid(), source->source_id()); + srs_trace("source url=%s, ip=%s, cache=%d, is_edge=%d, source_id=[%d][%s]", + req->get_stream_url().c_str(), ip.c_str(), enabled_cache, info->edge, ::getpid(), source->source_id().c_str()); source->set_cache(enabled_cache); switch (info->type) { diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index 8046a1ad1..e164b4c5a 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -825,8 +825,8 @@ srs_error_t SrsServer::initialize_st() return srs_error_new(ERROR_SYSTEM_ASSERT_FAILED, "ppid=%d illegal for asprocess", ppid); } - srs_trace("server main cid=%d, pid=%d, ppid=%d, asprocess=%d", - _srs_context->get_id(), ::getpid(), ppid, asprocess); + srs_trace("server main cid=%s, pid=%d, ppid=%d, asprocess=%d", + _srs_context->get_id().c_str(), ::getpid(), ppid, asprocess); return err; } diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index d6b25503a..2fe07696c 100755 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -520,7 +520,7 @@ srs_error_t SrsConsumer::dump_packets(SrsMessageArray* msgs, int& count) count = 0; if (should_update_source_id) { - srs_trace("update source_id=%d[%d]", source->source_id(), source->source_id()); + srs_trace("update source_id=%s[%s]", source->source_id().c_str(), source->source_id().c_str()); should_update_source_id = false; } @@ -1792,7 +1792,7 @@ void SrsSourceManager::dispose() srs_error_t SrsSourceManager::cycle() { - int cid = _srs_context->get_id(); + std::string cid = _srs_context->get_id(); srs_error_t err = do_cycle(); _srs_context->set_id(cid); @@ -1809,7 +1809,7 @@ srs_error_t SrsSourceManager::do_cycle() // Do cycle source to cleanup components, such as hls dispose. if ((err = source->cycle()) != srs_success) { - return srs_error_wrap(err, "source=%d/%d cycle", source->source_id(), source->pre_source_id()); + return srs_error_wrap(err, "source=%s/%s cycle", source->source_id().c_str(), source->pre_source_id().c_str()); } // TODO: FIXME: support source cleanup. @@ -1866,7 +1866,7 @@ SrsSource::SrsSource() mix_queue = new SrsMixQueue(); _can_publish = true; - _pre_source_id = _source_id = -1; + _pre_source_id = _source_id = ""; die_at = 0; handler = NULL; @@ -2065,7 +2065,7 @@ srs_error_t SrsSource::on_reload_vhost_play(string vhost) return err; } -srs_error_t SrsSource::on_source_id_changed(int id) +srs_error_t SrsSource::on_source_id_changed(string id) { srs_error_t err = srs_success; @@ -2073,7 +2073,7 @@ srs_error_t SrsSource::on_source_id_changed(int id) return err; } - if (_pre_source_id == -1) { + if (_pre_source_id == "") { _pre_source_id = id; } else if (_pre_source_id != _source_id) { _pre_source_id = _source_id; @@ -2091,12 +2091,12 @@ srs_error_t SrsSource::on_source_id_changed(int id) return err; } -int SrsSource::source_id() +string SrsSource::source_id() { return _source_id; } -int SrsSource::pre_source_id() +string SrsSource::pre_source_id() { return _pre_source_id; } diff --git a/trunk/src/app/srs_app_source.hpp b/trunk/src/app/srs_app_source.hpp index 7af2ba582..4cdb4be09 100644 --- a/trunk/src/app/srs_app_source.hpp +++ b/trunk/src/app/srs_app_source.hpp @@ -508,9 +508,9 @@ private: // For edge, it's the edge ingest id. // when source id changed, for example, the edge reconnect, // invoke the on_source_id_changed() to let all clients know. - int _source_id; + std::string _source_id; // previous source id. - int _pre_source_id; + std::string _pre_source_id; // deep copy of client request. SrsRequest* req; // To delivery stream to clients. @@ -567,10 +567,10 @@ public: virtual srs_error_t on_reload_vhost_play(std::string vhost); public: // The source id changed. - virtual srs_error_t on_source_id_changed(int id); + virtual srs_error_t on_source_id_changed(std::string id); // Get current source id. - virtual int source_id(); - virtual int pre_source_id(); + virtual std::string source_id(); + virtual std::string pre_source_id(); // Whether source is inactive, which means there is no publishing stream source. // @remark For edge, it's inactive util stream has been pulled from origin. virtual bool inactive(); diff --git a/trunk/src/app/srs_app_st.cpp b/trunk/src/app/srs_app_st.cpp index 831a0613a..36b2942e0 100755 --- a/trunk/src/app/srs_app_st.cpp +++ b/trunk/src/app/srs_app_st.cpp @@ -74,14 +74,14 @@ srs_error_t SrsDummyCoroutine::pull() return srs_error_new(ERROR_THREAD_DUMMY, "dummy pull"); } -int SrsDummyCoroutine::cid() +string SrsDummyCoroutine::cid() { - return 0; + return ""; } _ST_THREAD_CREATE_PFN _pfn_st_thread_create = (_ST_THREAD_CREATE_PFN)st_thread_create; -SrsSTCoroutine::SrsSTCoroutine(string n, ISrsCoroutineHandler* h, int cid) +SrsSTCoroutine::SrsSTCoroutine(string n, ISrsCoroutineHandler* h, std::string cid) { name = n; handler = h; @@ -180,7 +180,7 @@ srs_error_t SrsSTCoroutine::pull() return srs_error_copy(trd_err); } -int SrsSTCoroutine::cid() +string SrsSTCoroutine::cid() { return context; } @@ -188,7 +188,7 @@ int SrsSTCoroutine::cid() srs_error_t SrsSTCoroutine::cycle() { if (_srs_context) { - if (context) { + if (!context.empty()) { _srs_context->set_id(context); } else { context = _srs_context->generate_id(); diff --git a/trunk/src/app/srs_app_st.hpp b/trunk/src/app/srs_app_st.hpp index 956e00b42..cdf4ca170 100644 --- a/trunk/src/app/srs_app_st.hpp +++ b/trunk/src/app/srs_app_st.hpp @@ -80,7 +80,7 @@ public: // @return a copy of error, which should be freed by user. // NULL if not terminated and user should pull again. virtual srs_error_t pull() = 0; - virtual int cid() = 0; + virtual std::string cid() = 0; }; // An empty coroutine, user can default to this object before create any real coroutine. @@ -95,7 +95,7 @@ public: virtual void stop(); virtual void interrupt(); virtual srs_error_t pull(); - virtual int cid(); + virtual std::string cid(); }; // For utest to mock the thread create. @@ -121,7 +121,7 @@ private: ISrsCoroutineHandler* handler; private: srs_thread_t trd; - int context; + std::string context; srs_error_t trd_err; private: bool started; @@ -132,7 +132,7 @@ private: public: // Create a thread with name n and handler h. // @remark User can specify a cid for thread to use, or we will allocate a new one. - SrsSTCoroutine(std::string n, ISrsCoroutineHandler* h, int cid = 0); + SrsSTCoroutine(std::string n, ISrsCoroutineHandler* h, std::string cid = ""); virtual ~SrsSTCoroutine(); public: // Start the thread. @@ -154,7 +154,7 @@ public: // @remark Return ERROR_THREAD_INTERRUPED when thread is interrupted. virtual srs_error_t pull(); // Get the context id of thread. - virtual int cid(); + virtual std::string cid(); private: virtual srs_error_t cycle(); static void* pfn(void* arg); diff --git a/trunk/src/app/srs_app_statistic.cpp b/trunk/src/app/srs_app_statistic.cpp index 6ce6adbb5..7c505b220 100644 --- a/trunk/src/app/srs_app_statistic.cpp +++ b/trunk/src/app/srs_app_statistic.cpp @@ -71,7 +71,7 @@ srs_error_t SrsStatisticVhost::dumps(SrsJsonObject* obj) bool hls_enabled = _srs_config->get_hls_enabled(vhost); bool enabled = _srs_config->get_vhost_enabled(vhost); - obj->set("id", SrsJsonAny::integer(id)); + obj->set("id", SrsJsonAny::str(id.c_str())); obj->set("name", SrsJsonAny::str(vhost.c_str())); obj->set("enabled", SrsJsonAny::boolean(enabled)); obj->set("clients", SrsJsonAny::integer(nb_clients)); @@ -134,9 +134,9 @@ srs_error_t SrsStatisticStream::dumps(SrsJsonObject* obj) { srs_error_t err = srs_success; - obj->set("id", SrsJsonAny::integer(id)); + obj->set("id", SrsJsonAny::str(id.c_str())); obj->set("name", SrsJsonAny::str(stream.c_str())); - obj->set("vhost", SrsJsonAny::integer(vhost->id)); + obj->set("vhost", SrsJsonAny::str(vhost->id.c_str())); obj->set("app", SrsJsonAny::str(app.c_str())); obj->set("live_ms", SrsJsonAny::integer(srsu2ms(srs_get_system_time()))); obj->set("clients", SrsJsonAny::integer(nb_clients)); @@ -154,7 +154,7 @@ srs_error_t SrsStatisticStream::dumps(SrsJsonObject* obj) obj->set("publish", publish); publish->set("active", SrsJsonAny::boolean(active)); - publish->set("cid", SrsJsonAny::integer(connection_cid)); + publish->set("cid", SrsJsonAny::str(connection_cid.c_str())); if (!has_video) { obj->set("video", SrsJsonAny::null()); @@ -184,7 +184,7 @@ srs_error_t SrsStatisticStream::dumps(SrsJsonObject* obj) return err; } -void SrsStatisticStream::publish(int cid) +void SrsStatisticStream::publish(string cid) { connection_cid = cid; active = true; @@ -203,7 +203,7 @@ void SrsStatisticStream::close() SrsStatisticClient::SrsStatisticClient() { - id = 0; + id = ""; stream = NULL; conn = NULL; req = NULL; @@ -219,9 +219,9 @@ srs_error_t SrsStatisticClient::dumps(SrsJsonObject* obj) { srs_error_t err = srs_success; - obj->set("id", SrsJsonAny::integer(id)); - obj->set("vhost", SrsJsonAny::integer(stream->vhost->id)); - obj->set("stream", SrsJsonAny::integer(stream->id)); + obj->set("id", SrsJsonAny::str(id.c_str())); + obj->set("vhost", SrsJsonAny::str(stream->vhost->id.c_str())); + obj->set("stream", SrsJsonAny::str(stream->id.c_str())); 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())); @@ -278,21 +278,21 @@ SrsStatistic::~SrsStatistic() srs_freep(clk); if (true) { - std::map::iterator it; + std::map::iterator it; for (it = vhosts.begin(); it != vhosts.end(); it++) { SrsStatisticVhost* vhost = it->second; srs_freep(vhost); } } if (true) { - std::map::iterator it; + std::map::iterator it; for (it = streams.begin(); it != streams.end(); it++) { SrsStatisticStream* stream = it->second; srs_freep(stream); } } if (true) { - std::map::iterator it; + std::map::iterator it; for (it = clients.begin(); it != clients.end(); it++) { SrsStatisticClient* client = it->second; srs_freep(client); @@ -319,40 +319,27 @@ SrsStatistic* SrsStatistic::instance() return _instance; } -SrsStatisticVhost* SrsStatistic::find_vhost(int vid) +SrsStatisticVhost* SrsStatistic::find_vhost(string vid) { - std::map::iterator it; + std::map::iterator it; if ((it = vhosts.find(vid)) != vhosts.end()) { return it->second; } return NULL; } -SrsStatisticVhost* SrsStatistic::find_vhost(string name) +SrsStatisticStream* SrsStatistic::find_stream(string sid) { - if (rvhosts.empty()) { - return NULL; - } - - std::map::iterator it; - if ((it = rvhosts.find(name)) != rvhosts.end()) { - return it->second; - } - return NULL; -} - -SrsStatisticStream* SrsStatistic::find_stream(int sid) -{ - std::map::iterator it; + std::map::iterator it; if ((it = streams.find(sid)) != streams.end()) { return it->second; } return NULL; } -SrsStatisticClient* SrsStatistic::find_client(int cid) +SrsStatisticClient* SrsStatistic::find_client(string cid) { - std::map::iterator it; + std::map::iterator it; if ((it = clients.find(cid)) != clients.end()) { return it->second; } @@ -405,7 +392,7 @@ srs_error_t SrsStatistic::on_video_frames(SrsRequest* req, int nb_frames) return err; } -void SrsStatistic::on_stream_publish(SrsRequest* req, int cid) +void SrsStatistic::on_stream_publish(SrsRequest* req, string cid) { SrsStatisticVhost* vhost = create_vhost(req); SrsStatisticStream* stream = create_stream(vhost, req); @@ -421,7 +408,7 @@ void SrsStatistic::on_stream_close(SrsRequest* req) // TODO: FIXME: Should fix https://github.com/ossrs/srs/issues/803 if (true) { - std::map::iterator it; + std::map::iterator it; if ((it=streams.find(stream->id)) != streams.end()) { streams.erase(it); } @@ -436,7 +423,7 @@ void SrsStatistic::on_stream_close(SrsRequest* req) } } -srs_error_t SrsStatistic::on_client(int id, SrsRequest* req, SrsConnection* conn, SrsRtmpConnType type) +srs_error_t SrsStatistic::on_client(std::string id, SrsRequest* req, SrsConnection* conn, SrsRtmpConnType type) { srs_error_t err = srs_success; @@ -464,9 +451,9 @@ srs_error_t SrsStatistic::on_client(int id, SrsRequest* req, SrsConnection* conn return err; } -void SrsStatistic::on_disconnect(int id) +void SrsStatistic::on_disconnect(std::string id) { - std::map::iterator it; + std::map::iterator it; if ((it = clients.find(id)) == clients.end()) { return; } @@ -484,7 +471,7 @@ void SrsStatistic::on_disconnect(int id) void SrsStatistic::kbps_add_delta(SrsConnection* conn) { - int id = conn->srs_id(); + std::string id = conn->srs_id(); if (clients.find(id) == clients.end()) { return; } @@ -506,14 +493,14 @@ SrsKbps* SrsStatistic::kbps_sample() { kbps->sample(); if (true) { - std::map::iterator it; + std::map::iterator it; for (it = vhosts.begin(); it != vhosts.end(); it++) { SrsStatisticVhost* vhost = it->second; vhost->kbps->sample(); } } if (true) { - std::map::iterator it; + std::map::iterator it; for (it = streams.begin(); it != streams.end(); it++) { SrsStatisticStream* stream = it->second; stream->kbps->sample(); @@ -532,7 +519,7 @@ srs_error_t SrsStatistic::dumps_vhosts(SrsJsonArray* arr) { srs_error_t err = srs_success; - std::map::iterator it; + std::map::iterator it; for (it = vhosts.begin(); it != vhosts.end(); it++) { SrsStatisticVhost* vhost = it->second; @@ -551,7 +538,7 @@ srs_error_t SrsStatistic::dumps_streams(SrsJsonArray* arr) { srs_error_t err = srs_success; - std::map::iterator it; + std::map::iterator it; for (it = streams.begin(); it != streams.end(); it++) { SrsStatisticStream* stream = it->second; @@ -570,7 +557,7 @@ srs_error_t SrsStatistic::dumps_clients(SrsJsonArray* arr, int start, int count) { srs_error_t err = srs_success; - std::map::iterator it = clients.begin(); + std::map::iterator it = clients.begin(); for (int i = 0; i < start + count && it != clients.end(); it++, i++) { if (i < start) { continue; diff --git a/trunk/src/app/srs_app_statistic.hpp b/trunk/src/app/srs_app_statistic.hpp index c80d1ca5f..7f0de259e 100644 --- a/trunk/src/app/srs_app_statistic.hpp +++ b/trunk/src/app/srs_app_statistic.hpp @@ -43,7 +43,7 @@ class SrsJsonArray; struct SrsStatisticVhost { public: - int64_t id; + std::string id; std::string vhost; int nb_streams; int nb_clients; @@ -61,13 +61,13 @@ public: struct SrsStatisticStream { public: - int64_t id; + std::string id; SrsStatisticVhost* vhost; std::string app; std::string stream; std::string url; bool active; - int connection_cid; + std::string connection_cid; int nb_clients; uint64_t nb_frames; public: @@ -101,7 +101,7 @@ public: virtual srs_error_t dumps(SrsJsonObject* obj); public: // Publish the stream. - virtual void publish(int cid); + virtual void publish(std::string cid); // Close the stream. virtual void close(); }; @@ -113,7 +113,7 @@ public: SrsConnection* conn; SrsRequest* req; SrsRtmpConnType type; - int id; + std::string id; srs_utime_t create; public: SrsStatisticClient(); @@ -151,19 +151,19 @@ private: int64_t _server_id; private: // The key: vhost id, value: vhost object. - std::map vhosts; + std::map vhosts; // The key: vhost url, value: vhost Object. // @remark a fast index for vhosts. std::map rvhosts; private: // The key: stream id, value: stream Object. - std::map streams; + std::map streams; // The key: stream url, value: stream Object. // @remark a fast index for streams. std::map rstreams; private: // The key: client id, value: stream object. - std::map clients; + std::map clients; // The server total kbps. SrsKbps* kbps; SrsWallClock* clk; @@ -179,10 +179,9 @@ private: public: static SrsStatistic* instance(); public: - virtual SrsStatisticVhost* find_vhost(int vid); - virtual SrsStatisticVhost* find_vhost(std::string name); - virtual SrsStatisticStream* find_stream(int sid); - virtual SrsStatisticClient* find_client(int cid); + virtual SrsStatisticVhost* find_vhost(std::string vid); + virtual SrsStatisticStream* find_stream(std::string sid); + virtual SrsStatisticClient* find_client(std::string cid); public: // When got video info for stream. virtual srs_error_t on_video_info(SrsRequest* req, SrsVideoCodecId vcodec, SrsAvcProfile avc_profile, @@ -196,7 +195,7 @@ public: // When publish stream. // @param req the request object of publish connection. // @param cid the cid of publish connection. - virtual void on_stream_publish(SrsRequest* req, int cid); + virtual void on_stream_publish(SrsRequest* req, std::string cid); // When close stream. virtual void on_stream_close(SrsRequest* req); public: @@ -205,12 +204,12 @@ public: // @param req, the client request object. // @param conn, the physical absract connection object. // @param type, the type of connection. - virtual srs_error_t on_client(int id, SrsRequest* req, SrsConnection* conn, SrsRtmpConnType type); + virtual srs_error_t on_client(std::string id, SrsRequest* req, SrsConnection* conn, SrsRtmpConnType type); // Client disconnect // @remark the on_disconnect always call, while the on_client is call when // only got the request object, so the client specified by id maybe not // exists in stat. - virtual void on_disconnect(int id); + virtual void on_disconnect(std::string id); // Sample the kbps, add delta bytes of conn. // Use kbps_sample() to get all result of kbps stat. // TODO: FIXME: the add delta must use ISrsKbpsDelta interface instead. diff --git a/trunk/src/kernel/srs_kernel_error.hpp b/trunk/src/kernel/srs_kernel_error.hpp index 9920b73b3..9c6bdb17c 100644 --- a/trunk/src/kernel/srs_kernel_error.hpp +++ b/trunk/src/kernel/srs_kernel_error.hpp @@ -411,7 +411,7 @@ private: std::string file; int line; - int cid; + std::string cid; int rerrno; std::string desc; diff --git a/trunk/src/kernel/srs_kernel_log.cpp b/trunk/src/kernel/srs_kernel_log.cpp index 1b2bfcfef..2fd5ae072 100644 --- a/trunk/src/kernel/srs_kernel_log.cpp +++ b/trunk/src/kernel/srs_kernel_log.cpp @@ -42,23 +42,23 @@ void ISrsLog::reopen() { } -void ISrsLog::verbose(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) +void ISrsLog::verbose(const char* /*tag*/, const char* /*context_id*/, const char* /*fmt*/, ...) { } -void ISrsLog::info(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) +void ISrsLog::info(const char* /*tag*/, const char* /*context_id*/, const char* /*fmt*/, ...) { } -void ISrsLog::trace(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) +void ISrsLog::trace(const char* /*tag*/, const char* /*context_id*/, const char* /*fmt*/, ...) { } -void ISrsLog::warn(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) +void ISrsLog::warn(const char* /*tag*/, const char* /*context_id*/, const char* /*fmt*/, ...) { } -void ISrsLog::error(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) +void ISrsLog::error(const char* /*tag*/, const char* /*context_id*/, const char* /*fmt*/, ...) { } @@ -70,19 +70,19 @@ ISrsThreadContext::~ISrsThreadContext() { } -int ISrsThreadContext::generate_id() +std::string ISrsThreadContext::generate_id() { - return 0; + return ""; } -int ISrsThreadContext::get_id() +std::string ISrsThreadContext::get_id() { - return 0; + return ""; } -int ISrsThreadContext::set_id(int /*v*/) +std::string ISrsThreadContext::set_id(std::string /*v*/) { - return 0; + return ""; } diff --git a/trunk/src/kernel/srs_kernel_log.hpp b/trunk/src/kernel/srs_kernel_log.hpp index cd877104d..56aefce4c 100644 --- a/trunk/src/kernel/srs_kernel_log.hpp +++ b/trunk/src/kernel/srs_kernel_log.hpp @@ -30,6 +30,7 @@ #include #include +#include #include @@ -64,16 +65,16 @@ public: virtual void reopen(); public: // The log for verbose, very verbose information. - virtual void verbose(const char* tag, int context_id, const char* fmt, ...); + virtual void verbose(const char* tag, const char* context_id, const char* fmt, ...); // The log for debug, detail information. - virtual void info(const char* tag, int context_id, const char* fmt, ...); + virtual void info(const char* tag, const char* context_id, const char* fmt, ...); // The log for trace, important information. - virtual void trace(const char* tag, int context_id, const char* fmt, ...); + virtual void trace(const char* tag, const char* context_id, const char* fmt, ...); // The log for warn, warn is something should take attention, but not a error. - virtual void warn(const char* tag, int context_id, const char* fmt, ...); + virtual void warn(const char* tag, const char* context_id, const char* fmt, ...); // The log for error, something error occur, do something about the error, ie. close the connection, // but we will donot abort the program. - virtual void error(const char* tag, int context_id, const char* fmt, ...); + virtual void error(const char* tag, const char* context_id, const char* fmt, ...); }; // The context id manager to identify context, for instance, the green-thread. @@ -89,12 +90,12 @@ public: virtual ~ISrsThreadContext(); public: // Generate the id for current context. - virtual int generate_id(); + virtual std::string generate_id(); // Get the generated id of current context. - virtual int get_id(); + virtual std::string get_id(); // Set the id of current context. // @return the previous id value; 0 if no context. - virtual int set_id(int v); + virtual std::string set_id(std::string v); }; // @global User must provides a log object @@ -107,25 +108,25 @@ extern ISrsThreadContext* _srs_context; // Use __FUNCTION__ to print c method // Use __PRETTY_FUNCTION__ to print c++ class:method #if 1 - #define srs_verbose(msg, ...) _srs_log->verbose(NULL, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_info(msg, ...) _srs_log->info(NULL, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_trace(msg, ...) _srs_log->trace(NULL, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_warn(msg, ...) _srs_log->warn(NULL, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_error(msg, ...) _srs_log->error(NULL, _srs_context->get_id(), msg, ##__VA_ARGS__) + #define srs_verbose(msg, ...) _srs_log->verbose(NULL, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_info(msg, ...) _srs_log->info(NULL, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_trace(msg, ...) _srs_log->trace(NULL, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_warn(msg, ...) _srs_log->warn(NULL, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_error(msg, ...) _srs_log->error(NULL, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) #endif #if 0 - #define srs_verbose(msg, ...) _srs_log->verbose(__FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_info(msg, ...) _srs_log->info(__FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_trace(msg, ...) _srs_log->trace(__FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_warn(msg, ...) _srs_log->warn(__FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_error(msg, ...) _srs_log->error(__FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) + #define srs_verbose(msg, ...) _srs_log->verbose(__FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_info(msg, ...) _srs_log->info(__FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_trace(msg, ...) _srs_log->trace(__FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_warn(msg, ...) _srs_log->warn(__FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_error(msg, ...) _srs_log->error(__FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) #endif #if 0 - #define srs_verbose(msg, ...) _srs_log->verbose(__PRETTY_FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_info(msg, ...) _srs_log->info(__PRETTY_FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_trace(msg, ...) _srs_log->trace(__PRETTY_FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_warn(msg, ...) _srs_log->warn(__PRETTY_FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) - #define srs_error(msg, ...) _srs_log->error(__PRETTY_FUNCTION__, _srs_context->get_id(), msg, ##__VA_ARGS__) + #define srs_verbose(msg, ...) _srs_log->verbose(__PRETTY_FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_info(msg, ...) _srs_log->info(__PRETTY_FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_trace(msg, ...) _srs_log->trace(__PRETTY_FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_warn(msg, ...) _srs_log->warn(__PRETTY_FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) + #define srs_error(msg, ...) _srs_log->error(__PRETTY_FUNCTION__, _srs_context->get_id().c_str(), msg, ##__VA_ARGS__) #endif // TODO: FIXME: Add more verbose and info logs. diff --git a/trunk/src/protocol/srs_http_stack.hpp b/trunk/src/protocol/srs_http_stack.hpp index 9413c32af..6d5e6b336 100644 --- a/trunk/src/protocol/srs_http_stack.hpp +++ b/trunk/src/protocol/srs_http_stack.hpp @@ -490,7 +490,7 @@ public: // then the rest id is 100. // @param pattern the handler pattern which will serve the request. // @return the REST id; -1 if not matched. - virtual int parse_rest_id(std::string pattern) = 0; + virtual std::string parse_rest_id(std::string pattern) = 0; public: // The left all data is chunked body, the infinite chunked mode, // which is chunked encoding without chunked header. diff --git a/trunk/src/protocol/srs_rtmp_stack.cpp b/trunk/src/protocol/srs_rtmp_stack.cpp index 4b11e5ec3..f56fcdcb4 100644 --- a/trunk/src/protocol/srs_rtmp_stack.cpp +++ b/trunk/src/protocol/srs_rtmp_stack.cpp @@ -2453,7 +2453,7 @@ srs_error_t SrsRtmpServer::response_connect_app(SrsRequest *req, const char* ser } // for edge to directly get the id of client. data->set("srs_pid", SrsAmf0Any::number(getpid())); - data->set("srs_id", SrsAmf0Any::number(_srs_context->get_id())); + data->set("srs_id", SrsAmf0Any::str(_srs_context->get_id().c_str())); if ((err = protocol->send_and_free_packet(pkt, 0)) != srs_success) { return srs_error_wrap(err, "send connect app response"); diff --git a/trunk/src/protocol/srs_service_http_conn.cpp b/trunk/src/protocol/srs_service_http_conn.cpp index 854872318..acaf7c935 100644 --- a/trunk/src/protocol/srs_service_http_conn.cpp +++ b/trunk/src/protocol/srs_service_http_conn.cpp @@ -535,19 +535,19 @@ string SrsHttpMessage::ext() return _ext; } -int SrsHttpMessage::parse_rest_id(string pattern) +std::string SrsHttpMessage::parse_rest_id(string pattern) { string p = _uri->get_path(); if (p.length() <= pattern.length()) { - return -1; + return ""; } string id = p.substr((int)pattern.length()); if (!id.empty()) { - return ::atoi(id.c_str()); + return id; } - return -1; + return ""; } srs_error_t SrsHttpMessage::enter_infinite_chunked() diff --git a/trunk/src/protocol/srs_service_http_conn.hpp b/trunk/src/protocol/srs_service_http_conn.hpp index 2fbba8a04..fc49d10d5 100644 --- a/trunk/src/protocol/srs_service_http_conn.hpp +++ b/trunk/src/protocol/srs_service_http_conn.hpp @@ -172,7 +172,7 @@ public: virtual std::string query(); virtual std::string ext(); // Get the RESTful matched id. - virtual int parse_rest_id(std::string pattern); + virtual std::string parse_rest_id(std::string pattern); public: virtual srs_error_t enter_infinite_chunked(); public: diff --git a/trunk/src/protocol/srs_service_log.cpp b/trunk/src/protocol/srs_service_log.cpp index 4bc0a0c2e..3036dfa25 100644 --- a/trunk/src/protocol/srs_service_log.cpp +++ b/trunk/src/protocol/srs_service_log.cpp @@ -26,6 +26,7 @@ #include #include #include +#include using namespace std; #include @@ -41,29 +42,31 @@ SrsThreadContext::~SrsThreadContext() { } -int SrsThreadContext::generate_id() +string SrsThreadContext::generate_id() { static int id = 0; if (id == 0) { id = (100 + ((uint32_t)(int64_t)this)%1000); } - int gid = id++; - cache[srs_thread_self()] = gid; - return gid; + + stringstream ss; + ss << gid; + cache[srs_thread_self()] = ss.str(); + return ss.str(); } -int SrsThreadContext::get_id() +string SrsThreadContext::get_id() { return cache[srs_thread_self()]; } -int SrsThreadContext::set_id(int v) +string SrsThreadContext::set_id(string v) { srs_thread_t self = srs_thread_self(); - int ov = 0; + string ov; if (cache.find(self) != cache.end()) { ov = cache[self]; } @@ -76,7 +79,7 @@ int SrsThreadContext::set_id(int v) void SrsThreadContext::clear_cid() { srs_thread_t self = srs_thread_self(); - std::map::iterator it = cache.find(self); + std::map::iterator it = cache.find(self); if (it != cache.end()) { cache.erase(it); } @@ -105,7 +108,7 @@ void SrsConsoleLog::reopen() { } -void SrsConsoleLog::verbose(const char* tag, int context_id, const char* fmt, ...) +void SrsConsoleLog::verbose(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelVerbose) { return; @@ -125,7 +128,7 @@ void SrsConsoleLog::verbose(const char* tag, int context_id, const char* fmt, .. fprintf(stdout, "%s\n", buffer); } -void SrsConsoleLog::info(const char* tag, int context_id, const char* fmt, ...) +void SrsConsoleLog::info(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelInfo) { return; @@ -145,7 +148,7 @@ void SrsConsoleLog::info(const char* tag, int context_id, const char* fmt, ...) fprintf(stdout, "%s\n", buffer); } -void SrsConsoleLog::trace(const char* tag, int context_id, const char* fmt, ...) +void SrsConsoleLog::trace(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelTrace) { return; @@ -165,7 +168,7 @@ void SrsConsoleLog::trace(const char* tag, int context_id, const char* fmt, ...) fprintf(stdout, "%s\n", buffer); } -void SrsConsoleLog::warn(const char* tag, int context_id, const char* fmt, ...) +void SrsConsoleLog::warn(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelWarn) { return; @@ -185,7 +188,7 @@ void SrsConsoleLog::warn(const char* tag, int context_id, const char* fmt, ...) fprintf(stderr, "%s\n", buffer); } -void SrsConsoleLog::error(const char* tag, int context_id, const char* fmt, ...) +void SrsConsoleLog::error(const char* tag, const char* context_id, const char* fmt, ...) { if (level > SrsLogLevelError) { return; @@ -211,7 +214,7 @@ void SrsConsoleLog::error(const char* tag, int context_id, const char* fmt, ...) } // LCOV_EXCL_STOP -bool srs_log_header(char* buffer, int size, bool utc, bool dangerous, const char* tag, int cid, const char* level, int* psize) +bool srs_log_header(char* buffer, int size, bool utc, bool dangerous, const char* tag, const char* cid, const char* level, int* psize) { // clock time timeval tv; @@ -235,24 +238,24 @@ bool srs_log_header(char* buffer, int size, bool utc, bool dangerous, const char if (dangerous) { if (tag) { written = snprintf(buffer, size, - "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%s][%d][%d][%d] ", + "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%s][%d][%s][%d] ", 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(tv.tv_usec / 1000), level, tag, getpid(), cid, errno); } else { written = snprintf(buffer, size, - "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%d][%d][%d] ", + "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%d][%s][%d] ", 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(tv.tv_usec / 1000), level, getpid(), cid, errno); } } else { if (tag) { written = snprintf(buffer, size, - "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%s][%d][%d] ", + "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%s][%d][%s] ", 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(tv.tv_usec / 1000), level, tag, getpid(), cid); } else { written = snprintf(buffer, size, - "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%d][%d] ", + "[%d-%02d-%02d %02d:%02d:%02d.%03d][%s][%d][%s] ", 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(tv.tv_usec / 1000), level, getpid(), cid); } diff --git a/trunk/src/protocol/srs_service_log.hpp b/trunk/src/protocol/srs_service_log.hpp index c262e968e..72c93400d 100644 --- a/trunk/src/protocol/srs_service_log.hpp +++ b/trunk/src/protocol/srs_service_log.hpp @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -36,14 +37,14 @@ class SrsThreadContext : public ISrsThreadContext { private: - std::map cache; + std::map cache; public: SrsThreadContext(); virtual ~SrsThreadContext(); public: - virtual int generate_id(); - virtual int get_id(); - virtual int set_id(int v); + virtual std::string generate_id(); + virtual std::string get_id(); + virtual std::string set_id(std::string v); public: virtual void clear_cid(); }; @@ -63,11 +64,11 @@ public: public: virtual srs_error_t initialize(); virtual void reopen(); - virtual void verbose(const char* tag, int context_id, const char* fmt, ...); - virtual void info(const char* tag, int context_id, const char* fmt, ...); - virtual void trace(const char* tag, int context_id, const char* fmt, ...); - virtual void warn(const char* tag, int context_id, const char* fmt, ...); - virtual void error(const char* tag, int context_id, const char* fmt, ...); + virtual void verbose(const char* tag, const char* context_id, const char* fmt, ...); + virtual void info(const char* tag, const char* context_id, const char* fmt, ...); + virtual void trace(const char* tag, const char* context_id, const char* fmt, ...); + virtual void warn(const char* tag, const char* context_id, const char* fmt, ...); + virtual void error(const char* tag, const char* context_id, const char* fmt, ...); }; // Generate the log header. @@ -75,6 +76,6 @@ public: // @param utc Whether use UTC time format in the log header. // @param psize Output the actual header size. // @remark It's a internal API. -bool srs_log_header(char* buffer, int size, bool utc, bool dangerous, const char* tag, int cid, const char* level, int* psize); +bool srs_log_header(char* buffer, int size, bool utc, bool dangerous, const char* tag, const char* cid, const char* level, int* psize); #endif diff --git a/trunk/src/protocol/srs_service_rtmp_conn.cpp b/trunk/src/protocol/srs_service_rtmp_conn.cpp index 01343eb51..268d098fc 100644 --- a/trunk/src/protocol/srs_service_rtmp_conn.cpp +++ b/trunk/src/protocol/srs_service_rtmp_conn.cpp @@ -122,7 +122,7 @@ srs_error_t SrsBasicRtmpClient::do_connect_app(string local_ip, bool debug) data->set("srs_version", SrsAmf0Any::str(RTMP_SIG_SRS_VERSION)); // for edge to directly get the id of client. data->set("srs_pid", SrsAmf0Any::number(getpid())); - data->set("srs_id", SrsAmf0Any::number(_srs_context->get_id())); + data->set("srs_id", SrsAmf0Any::str(_srs_context->get_id().c_str())); // local ip of edge data->set("srs_server_ip", SrsAmf0Any::str(local_ip.c_str())); diff --git a/trunk/src/utest/srs_utest_app.cpp b/trunk/src/utest/srs_utest_app.cpp index 98c34a29a..0be744239 100644 --- a/trunk/src/utest/srs_utest_app.cpp +++ b/trunk/src/utest/srs_utest_app.cpp @@ -88,7 +88,7 @@ public: srs_error_t err; srs_cond_t running; srs_cond_t exited; - int cid; + std::string cid; // Quit without error. bool quit; public: diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index b99a0e3b2..720c8b624 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -4099,16 +4099,16 @@ VOID TEST(KernelLogTest, CoverAll) HELPER_EXPECT_SUCCESS(l.initialize()); l.reopen(); - l.verbose("TAG", 0, "log"); - l.info("TAG", 0, "log"); - l.trace("TAG", 0, "log"); - l.warn("TAG", 0, "log"); - l.error("TAG", 0, "log"); + l.verbose("TAG", "0", "log"); + l.info("TAG", "0", "log"); + l.trace("TAG", "0", "log"); + l.warn("TAG", "0", "log"); + l.error("TAG", "0", "log"); ISrsThreadContext ctx; ctx.set_id(10); - EXPECT_EQ(0, ctx.get_id()); - EXPECT_EQ(0, ctx.generate_id()); + EXPECT_EQ("0", ctx.get_id()); + EXPECT_EQ("0", ctx.generate_id()); } } diff --git a/trunk/src/utest/srs_utest_service.cpp b/trunk/src/utest/srs_utest_service.cpp index 3e7d8b85d..1385852a4 100644 --- a/trunk/src/utest/srs_utest_service.cpp +++ b/trunk/src/utest/srs_utest_service.cpp @@ -558,7 +558,7 @@ VOID TEST(TCPServerTest, MessageConnection) if (true) { SrsHttpMessage m; HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/v1/streams/100", false)); - EXPECT_EQ(100, m.parse_rest_id("/v1/streams/")); EXPECT_FALSE(m.is_jsonp()); + EXPECT_EQ("100", m.parse_rest_id("/v1/streams/")); EXPECT_FALSE(m.is_jsonp()); } } @@ -1268,12 +1268,12 @@ VOID TEST(TCPServerTest, ContextUtility) if (true) { SrsThreadContext ctx; - EXPECT_EQ(0, ctx.set_id(100)); - EXPECT_EQ(100, ctx.set_id(1000)); - EXPECT_EQ(1000, ctx.get_id()); + EXPECT_EQ("0", ctx.set_id("100")); + EXPECT_EQ("100", ctx.set_id("1000")); + EXPECT_EQ("1000", ctx.get_id()); ctx.clear_cid(); - EXPECT_EQ(0, ctx.set_id(100)); + EXPECT_EQ("0", ctx.set_id("100")); } int base_size = 0; @@ -1286,20 +1286,20 @@ VOID TEST(TCPServerTest, ContextUtility) if (true) { int size = 0; char buf[1024]; HELPER_ARRAY_INIT(buf, 1024, 0); - ASSERT_TRUE(srs_log_header(buf, 1024, false, true, "SRS", 100, "Trace", &size)); + ASSERT_TRUE(srs_log_header(buf, 1024, false, true, "SRS", "100", "Trace", &size)); EXPECT_EQ(base_size, size); } if (true) { errno = 0; int size = 0; char buf[1024]; HELPER_ARRAY_INIT(buf, 1024, 0); - ASSERT_TRUE(srs_log_header(buf, 1024, false, true, NULL, 100, "Trace", &size)); + ASSERT_TRUE(srs_log_header(buf, 1024, false, true, NULL, "100", "Trace", &size)); EXPECT_EQ(base_size - 5, size); } if (true) { int size = 0; char buf[1024]; HELPER_ARRAY_INIT(buf, 1024, 0); - ASSERT_TRUE(srs_log_header(buf, 1024, false, false, NULL, 100, "Trace", &size)); + ASSERT_TRUE(srs_log_header(buf, 1024, false, false, NULL, "100", "Trace", &size)); EXPECT_EQ(base_size - 8, size); }