summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Kaduk <mateusz.kaduk@gmail.com>2005-05-23 06:34:22 +0000
committerMateusz Kaduk <mateusz.kaduk@gmail.com>2005-05-23 06:34:22 +0000
commit5cf7a669530b9f328fa79c401575cdd0e14a523e (patch)
treefc1b36b51d995498543aab140493ea3052719084
parent795182f6ad0afd57b5490b9fa5417222b2118788 (diff)
downloadmanaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.tar.gz
manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.tar.bz2
manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.tar.xz
manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.zip
Remove main.h, added storage class, moved some code to it
-rw-r--r--src/Makefile.am4
-rw-r--r--src/main.cpp75
-rw-r--r--src/storage.cpp84
-rw-r--r--src/storage.h (renamed from src/main.h)33
4 files changed, 148 insertions, 48 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f821495f..7d4a512b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,5 @@
bin_PROGRAMS = tmwserv
tmwserv_SOURCES = main.cpp \
- main.h \
accounthandler.h \
accounthandler.cpp \
connectionhandler.h \
@@ -29,7 +28,8 @@ tmwserv_SOURCES = main.cpp \
script.h \
script.cpp \
script-squirrel.h \
- script-squirrel.cpp
+ script-squirrel.cpp \
+ storage.cpp storage.h
# set the include path found by configure
INCLUDES= $(all_includes) $(SQLITE_CFLAGS)
diff --git a/src/main.cpp b/src/main.cpp
index 87f7d6d8..38b1f29f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -24,7 +24,7 @@
#define TMWSERV_VERSION "0.0.1"
#include <iostream>
-#include "main.h"
+#include "storage.h"
#include "netsession.h"
#include "connectionhandler.h"
#include "accounthandler.h"
@@ -64,31 +64,8 @@ int worldTime = 0; /**< Current world time in 100ms ticks */
bool running = true; /**< Determines if server keeps running */
Skill skillTree("base"); /**< Skill tree */
-SQLiteWrapper sqlite; /**< Database */
-/**
- * Create tables if necessary
- */
-void create_tables_if_necessary()
-{
- SQLiteWrapper::ResultTable r;
-
- if (!sqlite.SelectStmt("select count(*) from sqlite_master where tbl_name='topics' and type='table'", r)) {
- std::cout << "Error with select count(*) [create_tables_if_necessary]" << sqlite.LastError().c_str() << std::endl;
- }
-
- if (r.records_[0].fields_[0] != "0")
- return;
-
- sqlite.Begin();
- if (sqlite.DirectStatement("create table tmw_accounts(user TEXT, password TEXT, email TEXT)")) {
- std::cout << "Database: table tmw_accounts created" << std::endl;
- }
- else {
- std::cout << "Database: table exist" << std::endl;
- }
- sqlite.Commit();
-}
+Storage *store;
/**
* SDL timer callback, sends a <code>TMW_WORLD_TICK</code> event.
@@ -138,16 +115,7 @@ void initialize()
script = new ScriptSquirrel("main.nut");
#endif
- // Open database
- if (sqlite.Open("tmw.db")) {
- std::cout << "Database: tmw.db created or opened" << std::endl;
- }
- else {
- std::cout << "Database: couldn't open tmw.db" << std::endl;
- }
-
- //Create tables
- create_tables_if_necessary();
+ store = new Storage();
}
/**
@@ -163,17 +131,40 @@ void deinitialize()
// Destroy scripting subsystem
#ifdef SCRIPT_SUPPORT
+#ifdef SCRIPT_SUPPORT
+ script->update();
+#endif
+}
+
+/**
+ * Main function, initializes and runs server.
+ */
+int main(int argc, char *argv[])
+{
+ initialize();
+
+ // Ready for server work...
+ ConnectionHandler *connectionHandler = new ConnectionHandler();
+ NetSession *session = new NetSession();
+
+ // Note: This is just an idea, we could also pass the connection handler
+ // to the constructor of the account handler, upon which is would register
+ // itself for the messages it handles.
+ //
+ //AccountHandler *accountHandler = new AccountHandler();
+ //connectionHandler->registerHandler(C2S_LOGIN, accountHandler);
+
+ logger->log("The Mana World Server v%s", TMWSERV_VERSION);
+ session->startListen(connectionHandler, SERVER_PORT);
+ logger->log("Listening on port %d...", SERVER_PORT);
+
+ SDL_Event event;
+
delete script;
#endif
delete logger;
- // Close database
- if (sqlite.Close()) {
- std::cout << "Database: tmw.db closed" << std::endl;
- }
- else {
- std::cout << "Database: couldn't close tmw.db" << std::endl;
- }
+ delete store;
}
/**
diff --git a/src/storage.cpp b/src/storage.cpp
new file mode 100644
index 00000000..af863d47
--- /dev/null
+++ b/src/storage.cpp
@@ -0,0 +1,84 @@
+/*
+ * 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$
+ */
+#include "storage.h"
+#include <iostream>
+
+Storage::Storage()
+{
+#ifdef SQLITE_SUPPORT
+ // Open database
+ if (sqlite.Open("tmw.db")) {
+ std::cout << "Database: tmw.db created or opened" << std::endl;
+ }
+ else {
+ std::cout << "Database: couldn't open tmw.db" << std::endl;
+ }
+#endif
+#ifdef PGSQL_SUPPORT
+ std::cout << "Datbase: Postgresql currently not supported" << std::endl;
+ exit(1);
+#endif
+
+ //Create tables
+ create_tables_if_necessary();
+}
+
+Storage::~Storage()
+{
+#ifdef SQLITE_SUPPORT
+ // Close database
+ if (sqlite.Close()) {
+ std::cout << "Database: tmw.db closed" << std::endl;
+ }
+ else {
+ std::cout << "Database: couldn't close tmw.db" << std::endl;
+ }
+#endif
+}
+
+/**
+ * Create tables if necessary
+ */
+void Storage::create_tables_if_necessary()
+{
+#ifdef SQLITE_SUPPORT
+ SQLiteWrapper::ResultTable r;
+
+ if (!sqlite.SelectStmt("select count(*) from sqlite_master where tbl_name='topics' and type='table'", r)) {
+ std::cout << "Error with select count(*) [create_tables_if_necessary]" << sqlite.LastError().c_str() << std::endl;
+ }
+
+ if (r.records_[0].fields_[0] != "0")
+ return;
+
+ sqlite.Begin();
+ if (sqlite.DirectStatement("create table tmw_accounts(user TEXT, password TEXT, email TEXT)")) {
+ std::cout << "Database: table tmw_accounts created" << std::endl;
+ }
+ else {
+ std::cout << "Database: table exist" << std::endl;
+ }
+ sqlite.Commit();
+#endif
+}
+
diff --git a/src/main.h b/src/storage.h
index 6a61476c..da30c083 100644
--- a/src/main.h
+++ b/src/storage.h
@@ -1,5 +1,5 @@
/*
- * The Mana World
+ * The Mana World Server
* Copyright 2004 The Mana World Development Team
*
* This file is part of The Mana World.
@@ -20,12 +20,37 @@
*
* $Id$
*/
+#ifndef STORAGE_H
+#define STORAGE_H
-#ifndef _TMW_MAIN_H
-#define _TMW_MAIN_H
+#define SQLITE_SUPPORT // For now
+#ifdef SQLITE_SUPPORT
#include "sqlite/SQLiteWrapper.h"
+#endif
+
+class Storage {
+ public:
+ /**
+ * Constructor.
+ */
+ Storage();
+
+ /**
+ * Destructor.
+ */
+ ~Storage();
-extern SQLiteWrapper sqlite;
+ /**
+ * Create tables if master is empty
+ */
+ void create_tables_if_necessary();
+ private:
+#ifdef SQLITE_SUPPORT
+ SQLiteWrapper sqlite; /**< Database */
#endif
+};
+
+#endif /* STORAGE_H */
+