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:
parent
7bb04998af
commit
8cb5cab717
9 changed files with 77 additions and 19 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue