summaryrefslogtreecommitdiff
path: root/src/account-server/accounthandler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/account-server/accounthandler.hpp')
-rw-r--r--src/account-server/accounthandler.hpp133
1 files changed, 22 insertions, 111 deletions
diff --git a/src/account-server/accounthandler.hpp b/src/account-server/accounthandler.hpp
index 9762ca6d..ce38af01 100644
--- a/src/account-server/accounthandler.hpp
+++ b/src/account-server/accounthandler.hpp
@@ -24,118 +24,29 @@
#ifndef _TMWSERV_ACCOUNTHANDLER_H_
#define _TMWSERV_ACCOUNTHANDLER_H_
-#include "net/connectionhandler.hpp"
-#include "utils/tokencollector.hpp"
+#include <string>
-class AccountClient;
-class Character;
-
-/**
- * Manages the data stored in user accounts and provides a reliable interface
- * for working with an account. The account handler class can be used as a link
- * to a working account handle, and can be assigned to a user persistently as
- * an interface between the computer and account. (Messages from the user can
- * be traced to this account through the NetComputer structure, then processed
- * here with the persistent stored data).
- */
-class AccountHandler : public ConnectionHandler
+namespace AccountClientHandler
{
- public:
- /**
- * Constructor
- */
- AccountHandler();
-
- /**
- * Start the handler
- */
- bool
- startListen(enet_uint16 port);
-
- /**
- * Combines a client with it's account.
- * (Needed for TokenCollector)
- */
- void
- tokenMatched(AccountClient *computer, int accountID);
-
- /**
- * Deletes a pending client's data.
- * (Needed for TokenCollector)
- */
- void
- deletePendingClient(AccountClient* computer);
-
- /**
- * Deletes a pending connection's data.
- * (Needed for TokenCollector)
- */
- void
- deletePendingConnect(int accountID);
-
- /**
- * TokenCollector, used to login a client without the client having to
- * send username and password a second time.
- */
- TokenCollector<AccountHandler, AccountClient*, int>
- mTokenCollector;
-
- protected:
- /**
- * Process account related messages.
- */
- void
- processMessage(NetComputer *computer, MessageIn &message);
-
- NetComputer*
- computerConnected(ENetPeer *peer);
-
- void
- computerDisconnected(NetComputer *comp);
-
- private:
-
- void sendCharacterData(AccountClient &, int, Character const &);
-
- void
- handleLoginMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleLogoutMessage(AccountClient &computer);
-
- void
- handleReconnectMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleRegisterMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleUnregisterMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleEmailChangeMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleEmailGetMessage(AccountClient &computer);
-
- void
- handlePasswordChangeMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleCharacterCreateMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleCharacterSelectMessage(AccountClient &computer, MessageIn &msg);
-
- void
- handleCharacterDeleteMessage(AccountClient &computer, MessageIn &msg);
-
- /**
- * Send guild join for each guild the player belongs to.
- */
- void handleGuildJoining(AccountClient &computer, Character *character);
-};
-
-extern AccountHandler * accountHandler;
+ /**
+ * Creates a connection handler and starts listening on given port.
+ */
+ bool initialize(int port);
+
+ /**
+ * Stops listening to messages and destroys the connection handler.
+ */
+ void deinitialize();
+
+ /**
+ * Prepares a connection for a client coming from a game server.
+ */
+ void prepareReconnect(std::string const &token, int accountID);
+
+ /**
+ * Processes messages received by the connection handler.
+ */
+ void process();
+}
#endif