summaryrefslogtreecommitdiff
path: root/src/publicServer.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-03-17 20:29:34 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-03-17 20:29:34 +0000
commit437da38a26548714e6e1640722148f0f9f601ccb (patch)
tree3bc6a5a0903211e2d1ffa4fd9b3e6e467d413ecf /src/publicServer.c
parent51aae47ae08ad61507f219c24ed6d9321c866f45 (diff)
<Oroborus> - opravena chyba, clent nacital iba _jeden_ sietovy packet za 50 ms ( ano aj ked ich prislo viacej)
<Oroborus> - server pinguje clientov a na zaklade toho client vie, ci server nespadol <Oroborus> - publicserver sa da korektne vypnut signalom SIGQUIT <Oroborus> - publicserver bol pretiahnuty cez valgrind, teraz za pocet volani funkcie malloc rovna poctu volani funkcie free <Oroborus> - v sietovom multiplayeri sa da chodit cez teleporty a strielat do teleportov <Oroborus> - do rur sa da siez strielat git-svn-id: http://opensvn.csie.org/tuxanci_ng@24 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/publicServer.c')
-rw-r--r--src/publicServer.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/publicServer.c b/src/publicServer.c
index 8206062..7e1d56e 100644
--- a/src/publicServer.c
+++ b/src/publicServer.c
@@ -21,6 +21,7 @@
static int arenaId;
static arena_t *arena;
+static bool_t isSignalEnd;
arena_t* getWorldArena()
{
@@ -31,7 +32,7 @@ void countRoundInc()
{
}
-void initPublicServer()
+int initPublicServer()
{
initArenaFile();
initTux();
@@ -42,8 +43,15 @@ void initPublicServer()
arenaId = getArenaIdFormNetName( getParamElse("--arena", "FAGN") );
arena = getArena(arenaId);
addNewItem(arena->listItem, NULL);
+ isSignalEnd = FALSE;
- initNetMuliplayer(NET_GAME_TYPE_SERVER, NULL, atoi( getParamElse("--port", "2200") ) );
+ if( initNetMuliplayer(NET_GAME_TYPE_SERVER, NULL, atoi( getParamElse("--port", "2200") ) ) < 0 )
+ {
+ printf("Nemozem inicalizovat sietovy socket !\n");
+ return -1;
+ }
+
+ return 0;
}
int getChoiceArenaId()
@@ -92,6 +100,11 @@ void eventPublicServer()
eventNetMultiplayer();
+ if( isSignalEnd == TRUE )
+ {
+ quitPublicServer();
+ }
+
if( lastActive == 0 )
{
lastActive = getMyTime();
@@ -103,6 +116,7 @@ void eventPublicServer()
{
return;
}
+
/*
printf("interval = %d\n", interval);
*/
@@ -123,10 +137,19 @@ void eventPublicServer()
eventTimer();
}
+void my_handler_quit(int n)
+{
+ printf("my_handler_quit\n");
+ isSignalEnd = TRUE;
+}
+
void quitPublicServer()
{
printf("quit public server\n");
quitNetMultiplayer();
destroyArena(arena);
+ quitArenaFile();
quitTimer();
+ exit(0);
}
+