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

RTC: Refine generate_id, never set the cid for current thread

This commit is contained in:
winlin 2020-07-09 18:11:49 +08:00
parent 7052a1fafb
commit bbc168d980
6 changed files with 13 additions and 14 deletions

View file

@ -817,7 +817,7 @@ srs_error_t SrsServer::initialize_st()
} }
// set current log id. // set current log id.
_srs_context->generate_id(); _srs_context->set_id(_srs_context->generate_id());
// check asprocess. // check asprocess.
bool asprocess = _srs_config->get_asprocess(); bool asprocess = _srs_config->get_asprocess();

View file

@ -197,11 +197,10 @@ SrsContextId SrsSTCoroutine::cid()
srs_error_t SrsSTCoroutine::cycle() srs_error_t SrsSTCoroutine::cycle()
{ {
if (_srs_context) { if (_srs_context) {
if (!cid_.empty()) { if (cid_.empty()) {
_srs_context->set_id(cid_);
} else {
cid_ = _srs_context->generate_id(); cid_ = _srs_context->generate_id();
} }
_srs_context->set_id(cid_);
} }
srs_error_t err = handler->cycle(); srs_error_t err = handler->cycle();

View file

@ -80,21 +80,22 @@ public:
// The logic context, for example, a RTMP connection, or RTC Session, etc. // The logic context, for example, a RTMP connection, or RTC Session, etc.
// We can grep the context id to identify the logic unit, for debugging. // We can grep the context id to identify the logic unit, for debugging.
// For example: // For example:
// _srs_context->generate_id(); // Generate a new context id. // SrsContextId cid = _srs_context->get_id(); // Get current context id.
// _srs_context->get_id(); // Get current context id. // SrsContextId new_cid = _srs_context->generate_id(); // Generate a new context id.
// int old_id = _srs_context->set_id("1000"); // Change the context id. // SrsContextId old_cid = _srs_context->set_id(new_cid); // Change the context id.
class ISrsContext class ISrsContext
{ {
public: public:
ISrsContext(); ISrsContext();
virtual ~ISrsContext(); virtual ~ISrsContext();
public: public:
// Generate the id for current context. // Generate a new context id.
// @remark We do not set to current thread, user should do this.
virtual SrsContextId generate_id() = 0; virtual SrsContextId generate_id() = 0;
// Get the generated id of current context. // Get the context id of current thread.
virtual SrsContextId get_id() = 0; virtual SrsContextId get_id() = 0;
// Set the id of current context. // Set the context id of current thread.
// @return the previous id value; 0 if no context. // @return the previous context id.
virtual SrsContextId set_id(SrsContextId v) = 0; virtual SrsContextId set_id(SrsContextId v) = 0;
}; };

View file

@ -213,7 +213,7 @@ srs_error_t do_main(int argc, char** argv)
int main(int argc, char** argv) { int main(int argc, char** argv) {
// For background context id. // For background context id.
_srs_context->generate_id(); _srs_context->set_id(_srs_context->generate_id());
srs_error_t err = do_main(argc, argv); srs_error_t err = do_main(argc, argv);

View file

@ -46,7 +46,6 @@ SrsThreadContext::~SrsThreadContext()
SrsContextId SrsThreadContext::generate_id() SrsContextId SrsThreadContext::generate_id()
{ {
SrsContextId cid = SrsContextId(srs_random_str(8)); SrsContextId cid = SrsContextId(srs_random_str(8));
cache[srs_thread_self()] = cid;
return cid; return cid;
} }

View file

@ -70,7 +70,7 @@ srs_error_t srs_st_init()
return srs_error_new(ERROR_ST_SET_EPOLL, "st enable st failed, current is %s", st_get_eventsys_name()); return srs_error_new(ERROR_ST_SET_EPOLL, "st enable st failed, current is %s", st_get_eventsys_name());
} }
// Before ST init, we might have already inited the background cid. // Before ST init, we might have already initialized the background cid.
SrsContextId cid = _srs_context->get_id(); SrsContextId cid = _srs_context->get_id();
if (cid.empty()) { if (cid.empty()) {
cid = _srs_context->generate_id(); cid = _srs_context->generate_id();