diff options
Diffstat (limited to 'src/Core/ConnectionManager.h')
-rw-r--r-- | src/Core/ConnectionManager.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/Core/ConnectionManager.h b/src/Core/ConnectionManager.h new file mode 100644 index 0000000..49c9398 --- /dev/null +++ b/src/Core/ConnectionManager.h @@ -0,0 +1,67 @@ +/* + * 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 <poll.h> + +namespace Mad { + +namespace Net { +class Listener; +class Connection; +class ServerConnection; +class Packet; +} + +namespace Core { + +class ConnectionManager { + private: + // Prevent shallow copy + ConnectionManager(const ConnectionManager &o); + ConnectionManager& operator=(const ConnectionManager &o); + + std::list<Net::Listener*> listeners; + + std::list<Net::ServerConnection*> daemonConnections; + std::list<Net::ServerConnection*> clientConnections; + + std::vector<struct pollfd> pollfds; + + void refreshPollfds(); + + void daemonReceiveHandler(const Net::Connection*, const Net::Packet &packet) const; + void clientReceiveHandler(const Net::Connection*, const Net::Packet &packet) const; + + public: + ConnectionManager(); + virtual ~ConnectionManager(); + + void wait(int timeout); + void run(); +}; + +} +} + +#endif /*MAD_CORE_CONNECTIONMANAGER_H_*/ |