summaryrefslogtreecommitdiff
path: root/src/net/connectionhandler.hpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2006-12-29 13:43:24 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2006-12-29 13:43:24 +0000
commit291ad04d5b5c4ab08d85eadde116f968cd579b77 (patch)
treee4dced5715a5d9792cfdc0455a6b3ee6d3116079 /src/net/connectionhandler.hpp
parent3d404e743105bb9168c89e3451cf35d7d59120b1 (diff)
downloadmanaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.tar.gz
manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.tar.bz2
manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.tar.xz
manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.zip
Physically split the server into one tmwserv-acount program (account +
chat + database) and multiple tmwserv-game programs (selected with respect to the maps). Cleaned the repository by moving server-specific source files into dedicated directories.
Diffstat (limited to 'src/net/connectionhandler.hpp')
-rw-r--r--src/net/connectionhandler.hpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/net/connectionhandler.hpp b/src/net/connectionhandler.hpp
new file mode 100644
index 00000000..df22aacc
--- /dev/null
+++ b/src/net/connectionhandler.hpp
@@ -0,0 +1,123 @@
+/*
+ * The Mana World Server
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World 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 2 of the License, or
+ * any later version.
+ *
+ * The Mana World 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 The Mana World; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id$
+ */
+
+#ifndef _TMWSERV_CONNECTIONHANDLER_H_
+#define _TMWSERV_CONNECTIONHANDLER_H_
+
+#include <list>
+#include <enet/enet.h>
+
+class MessageIn;
+class MessageOut;
+class NetComputer;
+
+/**
+ * Convert a IP4 address into its string representation
+ */
+std::string
+ip4ToString(unsigned int ip4addr);
+
+/**
+ * This class represents the connection handler interface. The connection
+ * handler will respond to connect/reconnect/disconnect events and handle
+ * incoming messages, passing them on to registered message handlers.
+ */
+class ConnectionHandler
+{
+ public:
+ virtual ~ConnectionHandler() {}
+
+ /**
+ * Open the server socket.
+ */
+ bool startListen(enet_uint16 port);
+
+ /**
+ * Disconnect all the clients and close the server socket.
+ */
+ void stopListen();
+
+ /**
+ * Process outgoing messages and listen to the server socket for
+ * incoming messages and new connections.
+ */
+ virtual void process();
+
+ /**
+ * Process outgoing messages.
+ */
+ void flush();
+
+ /**
+ * Called when a computer sends a packet to the network session.
+ */
+ //void receivePacket(NetComputer *computer, Packet *packet);
+
+ /**
+ * Send packet to every client, used for announcements.
+ */
+ void sendToEveryone(const MessageOut &msg);
+
+ /**
+ * Return the number of connected clients.
+ */
+ unsigned int getClientNumber();
+
+ private:
+ ENetAddress address; /**< Includes the port to listen to. */
+ ENetHost *host; /**< The host that listen for connections. */
+
+ protected:
+ /**
+ * Called when a computer connects to the server. Initialize
+ * an object derived of NetComputer.
+ */
+ virtual NetComputer *computerConnected(ENetPeer *peer) = 0;
+
+ /**
+ * Called when a computer reconnects to the server.
+ */
+ //virtual NetComputer *computerReconnected(ENetPeer *) = 0;
+
+ /**
+ * Called when a computer disconnects from the server.
+ *
+ * <b>Note:</b> After returning from this method the NetComputer
+ * reference is no longer guaranteed to be valid.
+ */
+ virtual void computerDisconnected(NetComputer *) = 0;
+
+ /**
+ * Called when a message is received.
+ */
+ virtual void processMessage(NetComputer *, MessageIn &) = 0;
+
+ typedef std::list<NetComputer*> NetComputers;
+ /**
+ * A list of pointers to the client structures created by
+ * computerConnected.
+ */
+ NetComputers clients;
+};
+
+#endif