void ServersManager::refreshSyncServers() { for(size_t i = 0; i < servers_.size(); ++i){ IServerSPtr servi = servers_[i]; if(servi->isSuperServer()){ for(size_t j = 0; j < servers_.size(); ++j){ IServerSPtr servj = servers_[j]; if(servj != servi && servj->driver() == servi->driver()){ if(syncServers_){ servj->syncWithServer(servi.get()); } else{ servj->unSyncFromServer(servi.get()); } } } } } }
void ServersManager::closeServer(IServerSPtr server) { for(size_t i = 0; i < servers_.size(); ++i){ IServerSPtr ser = servers_[i]; if(ser == server){ if(ser->isSuperServer()){ IDriverSPtr drv = ser->driver(); for(size_t j = 0; j < servers_.size(); ++j){ IServerSPtr servj = servers_[j]; if(servj->driver() == drv){ servj->isSuperServer_ = true; break; } } } servers_.erase(servers_.begin()+i); refreshSyncServers(); break; } } }