summaryrefslogtreecommitdiff
path: root/src/net/tmwserv/logouthandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/tmwserv/logouthandler.cpp')
-rw-r--r--src/net/tmwserv/logouthandler.cpp275
1 files changed, 0 insertions, 275 deletions
diff --git a/src/net/tmwserv/logouthandler.cpp b/src/net/tmwserv/logouthandler.cpp
deleted file mode 100644
index 9ac6c7d4..00000000
--- a/src/net/tmwserv/logouthandler.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * The Mana World
- * Copyright (C) 2004 The Mana World Development Team
- *
- * This file is part of The Mana World.
- *
- * 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 2 of the License, or
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "net/tmwserv/logouthandler.h"
-
-#include "net/tmwserv/connection.h"
-#include "net/tmwserv/protocol.h"
-
-#include "net/tmwserv/accountserver/accountserver.h"
-#include "net/tmwserv/chatserver/chatserver.h"
-#include "net/tmwserv/gameserver/gameserver.h"
-
-#include "net/messagein.h"
-
-#include "main.h"
-
-Net::LogoutHandler *logoutHandler;
-
-extern Net::Connection *gameServerConnection;
-extern Net::Connection *chatServerConnection;
-extern Net::Connection *accountServerConnection;
-
-namespace TmwServ {
-
-LogoutHandler::LogoutHandler():
- mPassToken(NULL),
- mScenario(LOGOUT_EXIT),
- mLoggedOutAccount(false),
- mLoggedOutGame(false),
- mLoggedOutChat(false)
-{
- static const Uint16 _messages[] = {
- APMSG_LOGOUT_RESPONSE,
- APMSG_UNREGISTER_RESPONSE,
- GPMSG_DISCONNECT_RESPONSE,
- CPMSG_DISCONNECT_RESPONSE,
- 0
- };
- handledMessages = _messages;
- logoutHandler = this;
-}
-
-void LogoutHandler::handleMessage(MessageIn &msg)
-{
- switch (msg.getId())
- {
- case APMSG_LOGOUT_RESPONSE:
- {
- int errMsg = msg.readInt8();
-
- // Successful logout
- if (errMsg == ERRMSG_OK)
- {
- mLoggedOutAccount = true;
-
- switch (mScenario)
- {
- case LOGOUT_SWITCH_LOGIN:
- if (mLoggedOutGame && mLoggedOutChat)
- state = STATE_SWITCH_ACCOUNTSERVER;
- break;
-
- case LOGOUT_EXIT:
- default:
- if (mLoggedOutGame && mLoggedOutChat)
- state = STATE_FORCE_QUIT;
- break;
- }
- }
- // Logout failed
- else
- {
- switch (errMsg) {
- case ERRMSG_NO_LOGIN:
- errorMessage = "Accountserver: Not logged in";
- break;
- default:
- errorMessage = "Accountserver: Unknown error";
- break;
- }
- state = STATE_ERROR;
- }
- }
- break;
- case APMSG_UNREGISTER_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful unregistration
- if (errMsg == ERRMSG_OK)
- {
- state = STATE_UNREGISTER;
- }
- // Unregistration failed
- else
- {
- switch (errMsg) {
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage =
- "Accountserver: Wrong username or password";
- break;
- default:
- errorMessage = "Accountserver: Unknown error";
- break;
- }
- state = STATE_ACCOUNTCHANGE_ERROR;
- }
- }
- break;
- case GPMSG_DISCONNECT_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful logout
- if (errMsg == ERRMSG_OK)
- {
- mLoggedOutGame = true;
-
- switch (mScenario)
- {
- case LOGOUT_SWITCH_CHARACTER:
- if (mPassToken)
- {
- *mPassToken = msg.readString(32);
- mPassToken = NULL;
- }
- if (mLoggedOutChat) state = STATE_RECONNECT_ACCOUNT;
- break;
-
- case LOGOUT_SWITCH_LOGIN:
- if (mLoggedOutAccount && mLoggedOutChat)
- state = STATE_SWITCH_ACCOUNTSERVER;
- break;
-
- case LOGOUT_EXIT:
- default:
- if (mLoggedOutAccount && mLoggedOutChat)
- state = STATE_FORCE_QUIT;
- break;
- }
- }
- // Logout failed
- else
- {
- switch (errMsg) {
- case ERRMSG_NO_LOGIN:
- errorMessage = "Gameserver: Not logged in";
- break;
- default:
- errorMessage = "Gameserver: Unknown error";
- break;
- }
- state = STATE_ERROR;
- }
- }
- break;
- case CPMSG_DISCONNECT_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful logout
- if (errMsg == ERRMSG_OK)
- {
- mLoggedOutChat = true;
-
- switch (mScenario)
- {
- case LOGOUT_SWITCH_CHARACTER:
- if (mLoggedOutGame) state = STATE_RECONNECT_ACCOUNT;
- break;
-
- case LOGOUT_SWITCH_LOGIN:
- if (mLoggedOutAccount && mLoggedOutGame)
- state = STATE_SWITCH_ACCOUNTSERVER;
- break;
-
- case LOGOUT_EXIT:
- default:
- if (mLoggedOutAccount && mLoggedOutGame)
- {
- state = STATE_FORCE_QUIT;
- }
- break;
- }
- }
- else
- {
- switch (errMsg) {
- case ERRMSG_NO_LOGIN:
- errorMessage = "Chatserver: Not logged in";
- break;
- default:
- errorMessage = "Chatserver: Unknown error";
- break;
- }
- state = STATE_ERROR;
- }
- }
- break;
- }
-}
-
-void LogoutHandler::setScenario(unsigned short scenario,
- std::string *passToken)
-{
- mScenario = scenario;
- mPassToken = passToken;
-
- // Can't logout if we were not logged in ...
- if (mScenario == LOGOUT_EXIT)
- {
- if (accountServerConnection->isConnected())
- Net::AccountServer::logout();
- else
- setAccountLoggedOut();
-
- if (gameServerConnection->isConnected())
- Net::GameServer::logout(false);
- else
- setGameLoggedOut();
-
- if (chatServerConnection->isConnected())
- Net::ChatServer::logout();
- else
- setChatLoggedOut();
- }
- else if (mScenario == LOGOUT_SWITCH_LOGIN)
- {
- if (accountServerConnection->isConnected())
- Net::AccountServer::logout();
- else
- setAccountLoggedOut();
-
- if (gameServerConnection->isConnected())
- Net::GameServer::logout(false);
- else
- setGameLoggedOut();
-
- if (chatServerConnection->isConnected())
- Net::ChatServer::logout();
- else
- setChatLoggedOut();
- }
- else if (mScenario == LOGOUT_SWITCH_CHARACTER)
- {
- Net::GameServer::logout(true);
- Net::ChatServer::logout();
- }
-}
-
-void LogoutHandler::reset()
-{
- mPassToken = NULL;
- mScenario = LOGOUT_EXIT;
- mLoggedOutAccount = false;
- mLoggedOutGame = false;
- mLoggedOutChat = false;
-}
-
-} // namespace TmwServ