diff --git a/engine/server/application/CMakeLists.txt b/engine/server/application/CMakeLists.txt index 337eb1c0..8219918a 100644 --- a/engine/server/application/CMakeLists.txt +++ b/engine/server/application/CMakeLists.txt @@ -4,6 +4,7 @@ add_subdirectory(ChatServer) add_subdirectory(ConnectionServer) add_subdirectory(LoginServer) add_subdirectory(LogServer) +add_subdirectory(MetricsServer) add_subdirectory(PlanetServer) add_subdirectory(TaskManager) add_subdirectory(TransferServer) diff --git a/engine/server/application/MetricsServer/CMakeLists.txt b/engine/server/application/MetricsServer/CMakeLists.txt new file mode 100644 index 00000000..48ccb37f --- /dev/null +++ b/engine/server/application/MetricsServer/CMakeLists.txt @@ -0,0 +1,6 @@ + +cmake_minimum_required(VERSION 2.8) + +project(MetricsServer) + +add_subdirectory(src) diff --git a/engine/server/application/MetricsServer/src/CMakeLists.txt b/engine/server/application/MetricsServer/src/CMakeLists.txt new file mode 100644 index 00000000..4d3f599b --- /dev/null +++ b/engine/server/application/MetricsServer/src/CMakeLists.txt @@ -0,0 +1,86 @@ + +set(SHARED_SOURCES + shared/ConfigMetricsServer.cpp + shared/ConfigMetricsServer.h + shared/FirstMetricsServer.cpp + shared/FirstMetricsServer.h + shared/MetricsGatheringConnection.cpp + shared/MetricsGatheringConnection.h + shared/MetricsServer.cpp + shared/MetricsServer.h + shared/TaskConnection.cpp + shared/TaskConnection.h +) + +if(WIN32) + set(PLATFORM_SOURCES + win32/WinMain.cpp + ) + + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/win32) +else() + set(PLATFORM_SOURCES + linux/main.cpp + ) + + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/linux) +endif() + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/shared + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedCompression/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedDebug/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedFile/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedFoundation/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedFoundationTypes/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedMemoryManager/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedMessageDispatch/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedNetwork/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedNetworkMessages/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedRandom/include/public + ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedThread/include/public + ${SWG_ENGINE_SOURCE_DIR}/server/library/serverNetworkMessages/include/public + ${SWG_ENGINE_SOURCE_DIR}/server/library/serverUtility/include/public + ${SWG_EXTERNALS_SOURCE_DIR}/ours/library/archive/include + ${SWG_EXTERNALS_SOURCE_DIR}/3rd/library/platform/projects + ${SWG_EXTERNALS_SOURCE_DIR}/3rd/library/udplibrary +) + +link_directories(${STLPORT_LIBDIR}) + +add_executable(MetricsServer + ${SHARED_SOURCES} + ${PLATFORM_SOURCES} +) + +target_link_libraries(MetricsServer + sharedCompression + sharedDebug + sharedFile + sharedFoundation + sharedLog + sharedMath + sharedMemoryManager + sharedMessageDispatch + sharedNetwork + sharedNetworkMessages + sharedRandom + sharedSynchronization + sharedThread + sharedUtility + serverNetworkMessages + serverUtility + archive + fileInterface + localization + localizationArchive + unicode + unicodeArchive + udplibrary + MonAPI2 + ${ZLIB_LIBRARY} +) + +if(WIN32) + target_link_libraries(MetricsServer mswsock ws2_32) +endif() diff --git a/engine/server/application/MetricsServer/src/shared/MetricsServer.cpp b/engine/server/application/MetricsServer/src/shared/MetricsServer.cpp index 72c9ea22..77f601d7 100644 --- a/engine/server/application/MetricsServer/src/shared/MetricsServer.cpp +++ b/engine/server/application/MetricsServer/src/shared/MetricsServer.cpp @@ -19,7 +19,9 @@ #ifdef LINUX #include #endif - +#ifdef WINDOWS +#include +#endif //---------------------------------------------------------------- std::string MetricsServer::m_commandLine; int MetricsServer::m_worldCountChannel = 0; @@ -188,7 +190,11 @@ void MetricsServer::run() if (pDump) m_soeMonitor->dump(); Clock::limitFrameRate(); - usleep(2000); +#ifdef WIN32 + Sleep(2); +#else + usleep(2000); +#endif } } diff --git a/engine/server/application/MetricsServer/src/win32/WinMain.cpp b/engine/server/application/MetricsServer/src/win32/WinMain.cpp new file mode 100644 index 00000000..5955efba --- /dev/null +++ b/engine/server/application/MetricsServer/src/win32/WinMain.cpp @@ -0,0 +1,91 @@ +#include "sharedFoundation/FirstSharedFoundation.h" + +#include "ConfigMetricsServer.h" +#include "MetricsServer.h" + +#include "sharedCompression/SetupSharedCompression.h" +#include "sharedDebug/SetupSharedDebug.h" +#include "sharedFile/SetupSharedFile.h" +#include "sharedFoundation/Os.h" +#include "sharedFoundation/SetupSharedFoundation.h" +#include "sharedNetwork/NetworkHandler.h" +#include "sharedNetwork/SetupSharedNetwork.h" +#include "sharedNetworkMessages/SetupSharedNetworkMessages.h" +#include "sharedRandom/SetupSharedRandom.h" +#include "sharedThread/SetupSharedThread.h" + +#include + +// ====================================================================== + +int main(int argc, char ** argv) +{ + SetupSharedThread::install(); + SetupSharedDebug::install(1024); + + //-- setup foundation + SetupSharedFoundation::Data setupFoundationData(SetupSharedFoundation::Data::D_game); + + // command line hack + std::string cmdLine; + for(int i = 1; i < argc; ++i) + { + cmdLine += argv[i]; + if(i + 1 < argc) + { + cmdLine += " "; + } + } + + setupFoundationData.commandLine = cmdLine.c_str(); + setupFoundationData.createWindow = false; + setupFoundationData.clockUsesSleep = true; + + SetupSharedFoundation::install (setupFoundationData); + + { + //SetupSharedObject::Data data; + //SetupSharedObject::setupDefaultGameData(data); + //SetupSharedObject::install(data); + } + SetupSharedCompression::install(); + SetupSharedFile::install(true, 32); + + SetupSharedNetwork::SetupData networkSetupData; + SetupSharedNetwork::getDefaultServerSetupData(networkSetupData); + SetupSharedNetwork::install(networkSetupData); + + SetupSharedRandom::install(static_cast(time(NULL))); //lint !e1924 !e64 // NULL is a C-Style cast? + + //Os::setProgramName("MetricsServer"); + //setup the server + ConfigMetricsServer::install(); + + //set command line + cmdLine = setupFoundationData.commandLine; + size_t firstArg = cmdLine.find(" ", 0); + size_t lastSlash = 0; + size_t nextSlash = 0; + while(nextSlash < firstArg) + { + nextSlash = cmdLine.find("/", lastSlash); + if(nextSlash == cmdLine.npos || nextSlash >= firstArg) //lint !e1705 static class members may be accessed by the scoping operator (huh?) + break; + lastSlash = nextSlash + 1; + } + cmdLine = cmdLine.substr(lastSlash); + MetricsServer::setCommandLine(cmdLine); + + + //-- run game + NetworkHandler::install(); + MetricsServer::install(); + MetricsServer::run(); + MetricsServer::remove(); + NetworkHandler::remove(); + SetupSharedFoundation::remove(); + + return 0; +} + +