From f97ca126f05a922d339b4a99dfc2895f271181d7 Mon Sep 17 00:00:00 2001 From: driAn Date: Sat, 11 Aug 2007 17:22:19 +0000 Subject: [PATCH] no message git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1226 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/server.cpp | 20 ++++++ source/src/servercontroller.h | 118 ++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 source/src/servercontroller.h diff --git a/source/src/server.cpp b/source/src/server.cpp index d482949b..bbb3c59b 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -2,6 +2,9 @@ // runs dedicated or as client coroutine #include "cube.h" +#include "servercontroller.h" + +servercontroller *svcctrl = NULL; #define valid_client(c) (clients.inrange(c) && clients[c]->type!=ST_EMPTY) #define valid_flag(f) (f >= 0 && f < 2) @@ -1674,6 +1677,7 @@ void serverslice(uint timeout) // main server update, called from cube main lo { #ifdef STANDALONE int nextmillis = (int)enet_time_get(); + if(svcctrl) svcctrl->keepalive(); #else int nextmillis = isdedicated ? (int)enet_time_get() : lastmillis; #endif @@ -1773,6 +1777,7 @@ void serverslice(uint timeout) // main server update, called from cube main lo void cleanupserver() { if(serverhost) enet_host_destroy(serverhost); + if(svcctrl) svcctrl->stop(); } #ifndef STANDALONE @@ -1834,6 +1839,21 @@ int main(int argc, char **argv) int uprate = 0, maxcl = DEFAULTCLIENTS, scthreshold = -5; char *sdesc = "", *ip = "", *master = NULL, *passwd = "", *maprot = "", *adminpasswd = NULL, *srvmsg = NULL; + if(isdedicated && !svcctrl) + { + #ifdef WIN32 + svcctrl = new winservice(); + #endif + if(svcctrl) + { + svcctrl->argc = argc; svcctrl->argv = argv; + int c = svcctrl->start(); + #ifdef WIN32 + return c; + #endif + } + } + for(int i = 1; isvcmain(); }; + static void WINAPI requesthandler(DWORD request) { svc->requesthandler(request); }; + }; + + /*void log(const char *msg, bool error) + { + HANDLE eventsrc = RegisterEventSource(NULL, "AC Server"); + if(eventsrc) + { + int eventid = ((error ? 0x11 : 0x1) << 10) & (0x1 << 9) & (FACILITY_NULL << 6) & 0x1; // TODO: create event definitions + LPCTSTR msgs[1] = { msg }; + int r = ReportEvent(eventsrc, error ? EVENTLOG_ERROR_TYPE : EVENTLOG_INFORMATION_TYPE, 0, 4, NULL, 1, 0, msgs, NULL); + DeregisterEventSource(eventsrc); + } + }*/ +}; + +winservice *winservice::callbacks::svc = (winservice *)NULL; + +#elif __GNUC__ + +struct unixdaemon : servercontroller +{ + // UNDONE, AH +} + +#endif \ No newline at end of file