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

RTC: Refine UDP packet peer fast id. 4.0.68

This commit is contained in:
winlin 2021-02-05 18:04:29 +08:00
parent 7bb04998af
commit 8cb5cab717
9 changed files with 77 additions and 19 deletions

View file

@ -127,6 +127,12 @@ void SrsResourceManager::add_with_id(const std::string& id, ISrsResource* conn)
conns_id_[id] = conn;
}
void SrsResourceManager::add_with_fast_id(uint64_t id, ISrsResource* conn)
{
add(conn);
conns_fast_id_[id] = conn;
}
void SrsResourceManager::add_with_name(const std::string& name, ISrsResource* conn)
{
add(conn);
@ -144,6 +150,12 @@ ISrsResource* SrsResourceManager::find_by_id(std::string id)
return (it != conns_id_.end())? it->second : NULL;
}
ISrsResource* SrsResourceManager::find_by_fast_id(uint64_t id)
{
map<uint64_t, ISrsResource*>::iterator it = conns_fast_id_.find(id);
return (it != conns_fast_id_.end())? it->second : NULL;
}
ISrsResource* SrsResourceManager::find_by_name(std::string name)
{
map<string, ISrsResource*>::iterator it = conns_name_.find(name);
@ -316,6 +328,15 @@ void SrsResourceManager::dispose(ISrsResource* c)
}
}
for (map<uint64_t, ISrsResource*>::iterator it = conns_fast_id_.begin(); it != conns_fast_id_.end();) {
if (c != it->second) {
++it;
} else {
// Use C++98 style: https://stackoverflow.com/a/4636230
conns_fast_id_.erase(it++);
}
}
vector<ISrsResource*>::iterator it = std::find(conns_.begin(), conns_.end(), c);
if (it != conns_.end()) {
conns_.erase(it);