diff options
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/Makefile.am | 4 | ||||
-rw-r--r-- | src/server/application.cc | 66 | ||||
-rw-r--r-- | src/server/application.h | 32 | ||||
-rw-r--r-- | src/server/console.cc | 61 | ||||
-rw-r--r-- | src/server/console.h | 23 | ||||
-rw-r--r-- | src/server/server.cc | 97 | ||||
-rw-r--r-- | src/server/server.h | 11 |
7 files changed, 163 insertions, 131 deletions
diff --git a/src/server/Makefile.am b/src/server/Makefile.am index 6875dbf..0b9ba48 100644 --- a/src/server/Makefile.am +++ b/src/server/Makefile.am @@ -1,6 +1,6 @@ METASOURCES = AUTO -libserver_la_SOURCES = application.cc console.cc server.cc timer.cc -noinst_HEADERS = application.h console.h server.h timer.h +libserver_la_SOURCES = console.cc server.cc timer.cc +noinst_HEADERS = console.h server.h timer.h noinst_LTLIBRARIES = libserver.la INCLUDES = -I$(top_srcdir)/src libserver_la_LDFLAGS = -avoid-version -no-undefined diff --git a/src/server/application.cc b/src/server/application.cc deleted file mode 100644 index 8ea0808..0000000 --- a/src/server/application.cc +++ /dev/null @@ -1,66 +0,0 @@ -/* - server/application.cc - This file is part of the Osirion project and is distributed under - the terms and conditions of the GNU General Public License version 2 -*/ - -// project headers -#include "server/server.h" -#include "server/application.h" -#include "server/timer.h" -#include "core/core.h" -#include "game/game.h" - -namespace server { - -void Application::init() -{ - // FIXME core should be able to load game.so - // force initialization of the game object - server::game = new game::Game(); - - con_print << "Initializing server..." << std::endl; - - // initialize core - core::ApplicationInterface::init(); - - // connect to the game module - core::ApplicationInterface::connect(); -} - -void Application::run() -{ - const float server_framerate = 1.0f / 20.0f; - server::Timer timer; - - timer.mark(); - - while(true) { - float elapsed = timer.elapsed(); - - frame(elapsed); - - sys::sleep(server_framerate - elapsed); - timer.mark(); - } - -} - -void Application::shutdown() -{ - con_debug << "Shutting down server..." << std::endl; - - core::ApplicationInterface::shutdown(); - - quit(0); -} - -void Application::quit(int status) -{ - // FIXME core should be able to unload game.so - delete server::game; - - core::ApplicationInterface::quit(status); -} - -} diff --git a/src/server/application.h b/src/server/application.h deleted file mode 100644 index b081726..0000000 --- a/src/server/application.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - server/application.h - This file is part of the Osirion project and is distributed under - the terms and conditions of the GNU General Public License version 2 -*/ - -#ifndef __INCLUDED_SERVER_APPLICATION_H__ -#define __INCLUDED_SERVER_APPLICATION_H__ - -#include "core/applicationinterface.h" - -namespace server { - -/// server Application implementation -class Application : public core::ApplicationInterface { -public: - /// initialize the server Application - virtual void init(); - - /// run the server Application - virtual void run(); - - /// shutdown the server Application - virtual void shutdown(); - - /// quit the server Application - virtual void quit(int status); -}; - -} -#endif // __INCLUDED_SERVER_APPLICATION_H__ - diff --git a/src/server/console.cc b/src/server/console.cc index a2e8503..a8cc02e 100644 --- a/src/server/console.cc +++ b/src/server/console.cc @@ -5,10 +5,66 @@ */ #include "server/console.h" +#include "core/core.h" + #include <iostream> -namespace server +namespace server { + +namespace console { + +//--- private definition ------------------------------------------ + +/// server console implementation +class Console : public sys::ConsoleInterface { +public: + /// stream to send normal messages too + virtual std::ostream & messagestream(); + + /// stream to send warning messages too + virtual std::ostream & warningstream(); + + /// stream to send warning messages too + virtual std::ostream & errorstream(); + + /// stream to send debug messages too + virtual std::ostream & debugstream(); + + unsigned long ping; + +}; + +// private console object +Console console; + +//--- engine functions -------------------------------------------- + +extern "C" void func_con_ping(std::stringstream &args) +{ + con_print << "Ping!" << std::endl; + console.ping++; +} + +//--- public ------------------------------------------------------ + +void init() +{ + con_print << "Initializing console..." << std::endl; + + // register our engine functions + core::func::add("con_ping", func_con_ping); +} + +void shutdown() { + con_print << "Shutting down console..." << std::endl; + + // unregister our engine functions + core::func::remove("con_ping"); +} + +//--- private ----------------------------------------------------- + std::ostream & Console::messagestream() { return std::cout; @@ -28,5 +84,6 @@ std::ostream & Console::debugstream() return std::cout; } -} // namespace server +} // namespace console +} // namespace server diff --git a/src/server/console.h b/src/server/console.h index a5f45c3..1d94ba6 100644 --- a/src/server/console.h +++ b/src/server/console.h @@ -11,22 +11,13 @@ namespace server { -/// server console implementation -class Console : public sys::ConsoleInterface { -public: - /// stream to send normal messages too - virtual std::ostream & messagestream(); - - /// stream to send warning messages too - virtual std::ostream & warningstream(); - - /// stream to send warning messages too - virtual std::ostream & errorstream(); - - /// stream to send debug messages too - virtual std::ostream & debugstream(); - -}; +namespace console { + +void init(); + +void shutdown(); + +} // namespace console } // namespace server diff --git a/src/server/server.cc b/src/server/server.cc index fc37aa6..b6b6515 100644 --- a/src/server/server.cc +++ b/src/server/server.cc @@ -4,17 +4,104 @@ the terms and conditions of the GNU General Public License version 2 */ -// project headers - -#include "server/application.h" #include "server/console.h" +#include "server/server.h" +#include "server/timer.h" +#include "core/core.h" #include "game/game.h" namespace server { -Application application; -Console console; +//--- private definition ------------------------------------------ + +/// server Application implementation +class Server : public core::ApplicationInterface { +public: + /// initialize the server Application + virtual void init(); + + /// run the server Application + virtual void run(); + + /// shutdown the server Application + virtual void shutdown(); + + /// quit the server Application + virtual void quit(int status); +}; + +Server app; game::Game *game; +//--- public ------------------------------------------------------ + +/// the server main loop +void main(int count, char **arguments) +{ + std::cout << "The Osirion Project " << VERSION << std::endl; + for (int i =0; i < count; i++) + std::cout << arguments[i] << " "; + std::cout << std::endl; + + app.init(); + app.run(); + app.shutdown(); +} + +//--- private ----------------------------------------------------- + +void Server::init() +{ + // FIXME core should be able to load game.so - + // force initialization of the game object + server::game = new game::Game(); + + con_print << "Initializing server..." << std::endl; + + core::ApplicationInterface::init(); + + console::init(); + + core::ApplicationInterface::connect(); } +void Server::run() +{ + const float server_framerate = 1.0f / 20.0f; + server::Timer timer; + + timer.mark(); + + while(true) { + float elapsed = timer.elapsed(); + + frame(elapsed); + + sys::sleep(server_framerate - elapsed); + timer.mark(); + } + +} + +void Server::shutdown() +{ + con_debug << "Shutting down server..." << std::endl; + + console::shutdown(); + + core::ApplicationInterface::shutdown(); + + quit(0); +} + +void Server::quit(int status) +{ + // FIXME core should be able to unload game.so + delete server::game; + + core::ApplicationInterface::quit(status); +} + + +} // namespace server + diff --git a/src/server/server.h b/src/server/server.h index 7871c5f..29656bd 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -7,18 +7,13 @@ #ifndef __INCLUDED_SERVER_H__ #define __INCLUDED_SERVER_H__ -#include "server/application.h" -#include "server/console.h" #include "game/game.h" /// contains classes and functions to run a dedicated server namespace server { - -/// global server application instance -extern Application application; - -/// global server console instance -extern Console console; + +/// the server main loop +void main(int count, char **arguments); /// global Game instance extern game::Game *game; |