void ClientManager::addRemoteClient(sid_type sid, UserInfo const& ui) throw() { assert(!hasClient(sid) || remoteUsers.count(sid)); if(!remoteUsers.count(sid)) remoteUsers[sid] = new UserInfo(Command('B', Command::INF, sid)); if(ui.has("ID") && remoteUsers[sid]->has("ID")) { cids.erase(remoteUsers[sid]->getCID()); cids.insert(ui.getCID()); } if(ui.has("NI") && remoteUsers[sid]->has("NI")) { nicks.erase(remoteUsers[sid]->getNick()); nicks.insert(ui.getNick()); } remoteUsers[sid]->update(ui); }
void ClientManager::userUpdated(sid_type sid, UserInfo const& ui) throw() { LocalUsers::iterator i = localUsers.find(sid); if(i == localUsers.end()) assert(0); // maybe use this for remote later, but now... const string& oldNick = i->second->getUserInfo()->getNick(); const string& newNick = ui.getNick(); if(ui.has("NI")) { nicks.erase(oldNick); nicks.insert(newNick); } // CID can't change, nothing else to do }