/* * InformationManager.cpp * * Copyright (C) 2008 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "InformationManager.h" #include "Requests/DaemonListRequest.h" #include #include namespace Mad { namespace Client { std::auto_ptr InformationManager::informationManager; InformationManager::InformationManager(Net::Connection *connection) : initFinished(false) { Common::RequestManager::getRequestManager()->sendRequest(connection, std::auto_ptr( new Requests::DaemonListRequest(sigc::mem_fun(this, &InformationManager::daemonListRequestFinished)) ) ); } void InformationManager::daemonListRequestFinished(const Common::Request &request) { try { const std::vector &hostInfo = request.getResult().getHostInfo(); for(std::vector::const_iterator daemon = hostInfo.begin(); daemon != hostInfo.end(); ++daemon) { daemons.clear(); daemons.insert(std::make_pair(daemon->getName(), *daemon)); } initFinished = true; } catch(Common::Exception &e) { Common::Logger::logf(Common::Logger::CRITICAL, "Host list request failed: %s", e.strerror().c_str()); } } } }