diff options
Diffstat (limited to 'src/Core/ConnectionManager.h')
-rw-r--r-- | src/Core/ConnectionManager.h | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/src/Core/ConnectionManager.h b/src/Core/ConnectionManager.h deleted file mode 100644 index 75395ad..0000000 --- a/src/Core/ConnectionManager.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * ConnectionManager.h - * - * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -#ifndef MAD_CORE_CONNECTIONMANAGER_H_ -#define MAD_CORE_CONNECTIONMANAGER_H_ - -#include <list> -#include <vector> -#include <map> - -#include <Common/Configurable.h> -#include <Common/Exception.h> -#include <Common/HostInfo.h> -#include <Common/Initializable.h> -#include <Common/RequestManager.h> - -#include <Net/IPAddress.h> - -namespace Mad { - -namespace Net { -class Listener; -class ServerConnection; -class Packet; -} - -namespace Core { - -class ConnectionManager : public Common::Configurable, public Common::Initializable { - private: - class Connection : public Common::Connection { - public: - enum ConnectionType { - DAEMON, CLIENT - }; - - private: - Net::ServerConnection *connection; - ConnectionType type; - Common::HostInfo *hostInfo; - - protected: - virtual bool send(const Net::Packet &packet); - - public: - Connection(Net::ServerConnection *connection0, ConnectionType type0); - virtual ~Connection(); - - bool isConnected() const; - - virtual bool disconnect(); - virtual void* getCertificate(size_t *size) const; - virtual void* getPeerCertificate(size_t *size) const; - - ConnectionType getConnectionType() const { - return type; - } - - Common::HostInfo *getHostInfo() const { - return hostInfo; - } - - bool isIdentified() const { - return hostInfo; - } - - void identify(Common::HostInfo *info) { - hostInfo = info; - } - }; - - static ConnectionManager connectionManager; - - std::string x509TrustFile, x509CrlFile, x509CertFile, x509KeyFile; - - std::vector<Net::IPAddress> listenerAddresses; - std::list<Net::Listener*> listeners; - - std::list<Connection*> connections; - - std::map<std::string,Common::HostInfo> daemonInfo; - - // Prevent shallow copy - ConnectionManager(const ConnectionManager &o); - ConnectionManager& operator=(const ConnectionManager &o); - - void updateState(Common::HostInfo *hostInfo, Common::HostInfo::State state); - - ConnectionManager() {} - - protected: - virtual bool handleConfigEntry(const Common::ConfigEntry &entry, bool handled); - virtual void configFinished(); - - virtual void doInit(); - virtual void doDeinit(); - - public: - static ConnectionManager* get() { - return &connectionManager; - } - - void run(); - - Common::Connection* getDaemonConnection(const std::string &name) const throw (Common::Exception&); - std::string getDaemonName(const Common::Connection *con) const throw (Common::Exception&); - - void identifyDaemonConnection(Common::Connection *con, const std::string &name) throw (Common::Exception&); - std::vector<Common::HostInfo> getDaemonList() const; -}; - -} -} - -#endif /*MAD_CORE_CONNECTIONMANAGER_H_*/ |