UserPtr ClientManager::getUser(const string& aNick, const string& aHubUrl) noexcept { CID cid = makeCid(aNick, aHubUrl); Lock l(cs); auto ui = users.find(cid); if(ui != users.end()) { ui->second->setFlag(User::NMDC); return ui->second; } UserPtr p(new User(cid)); p->setFlag(User::NMDC); users.emplace(cid, p); return p; }
User::Ptr ClientManager::getUser(const string& aNick, const string& aHubUrl) throw() { CID cid = makeCid(aNick, aHubUrl); Lock l(cs); UserIter ui = users.find(cid); if(ui != users.end()) { if(ui->second->getFirstNick().empty()) ui->second->setFirstNick(aNick); ui->second->setFlag(User::NMDC); return ui->second; } User::Ptr p(new User(cid)); p->setFirstNick(aNick); p->setFlag(User::NMDC); users.insert(make_pair(cid, p)); return p; }