summaryrefslogtreecommitdiff
path: root/src/base/server.c
diff options
context:
space:
mode:
authorTomas Chvatal (scarabeus) <tomas.chvatal@gmail.com>2008-10-22 22:51:24 +0200
committerTomas Chvatal (scarabeus) <tomas.chvatal@gmail.com>2008-10-22 22:51:24 +0200
commit44daf03024fbf7cbffa10349044786f6ab784821 (patch)
treefe311eb22e2d853dfc18fde1a9e55d21815f4f82 /src/base/server.c
parente12753d2ec9db83ec08bb9db63902a82fb245cdd (diff)
Revert "X"
This reverts commit e12753d2ec9db83ec08bb9db63902a82fb245cdd.
Diffstat (limited to 'src/base/server.c')
-rw-r--r--src/base/server.c451
1 files changed, 223 insertions, 228 deletions
diff --git a/src/base/server.c b/src/base/server.c
index 2142db2..836b9d2 100644
--- a/src/base/server.c
+++ b/src/base/server.c
@@ -51,353 +51,348 @@ static int maxClients;
typedef struct proto_cmd_server_struct
{
- char *name;
- int len;
- int tux;
- void (*fce_proto) (client_t *, char *msg);
+ char *name;
+ int len;
+ int tux;
+ void (*fce_proto)(client_t *,char *msg);
} proto_cmd_server_t;
-static proto_cmd_server_t proto_cmd_list[] = {
- {.name = "hello",.len = 5,.tux = 0,.fce_proto = proto_recv_hello_server},
- {.name = "status",.len = 6,.tux = 0,.fce_proto = proto_recv_status_server},
+static proto_cmd_server_t proto_cmd_list[] =
+{
+ { .name = "hello", .len = 5, .tux = 0, .fce_proto = proto_recv_hello_server },
+ { .name = "status", .len = 6, .tux = 0, .fce_proto = proto_recv_status_server },
#ifdef PUBLIC_SERVER
- {.name = "list",.len = 4,.tux = 0,.fce_proto =
- proto_recv_listscore_server},
+ { .name = "list", .len = 4, .tux = 0, .fce_proto = proto_recv_listscore_server },
#endif
- {.name = "event",.len = 5,.tux = 1,.fce_proto = proto_recv_event_server},
- {.name = "check",.len = 5,.tux = 1,.fce_proto = proto_recv_check_server},
- {.name = "module",.len = 6,.tux = 1,.fce_proto = proto_recv_module_server},
- {.name = "chat",.len = 4,.tux = 1,.fce_proto = proto_recv_chat_server},
- {.name = "ping",.len = 4,.tux = 1,.fce_proto = proto_recv_ping_server},
- {.name = "echo",.len = 4,.tux = 0,.fce_proto = proto_recv_echo_server},
- {.name = "end",.len = 3,.tux = 1,.fce_proto = proto_recv_end_server},
- {.name = "",.len = 0,.tux = 0,.fce_proto = NULL},
+ { .name = "event", .len = 5, .tux = 1, .fce_proto = proto_recv_event_server },
+ { .name = "check", .len = 5, .tux = 1, .fce_proto = proto_recv_check_server },
+ { .name = "module", .len = 6, .tux = 1, .fce_proto = proto_recv_module_server },
+ { .name = "chat", .len = 4, .tux = 1, .fce_proto = proto_recv_chat_server },
+ { .name = "ping", .len = 4, .tux = 1, .fce_proto = proto_recv_ping_server },
+ { .name = "echo", .len = 4, .tux = 0, .fce_proto = proto_recv_echo_server },
+ { .name = "end", .len = 3, .tux = 1, .fce_proto = proto_recv_end_server },
+ { .name = "", .len = 0, .tux = 0, .fce_proto = NULL },
};
-static proto_cmd_server_t *
-findCmdProto(client_t * client, char *msg)
+static proto_cmd_server_t* findCmdProto(client_t *client, char *msg)
{
- int len;
- int i;
-
- len = strlen(msg);
+ int len;
+ int i;
- for (i = 0; proto_cmd_list[i].len != 0; i++) {
- proto_cmd_server_t *thisCmd;
+ len = strlen(msg);
- thisCmd = &proto_cmd_list[i];
+ for( i = 0 ; proto_cmd_list[i].len != 0 ; i++ )
+ {
+ proto_cmd_server_t *thisCmd;
+
+ thisCmd = &proto_cmd_list[i];
- if (len >= thisCmd->len
- && strncmp(msg, thisCmd->name, thisCmd->len) == 0) {
- if (thisCmd->tux && client->tux == NULL) {
- return NULL;
- }
+ if( len >= thisCmd->len && strncmp(msg, thisCmd->name, thisCmd->len) == 0 )
+ {
+ if( thisCmd->tux && client->tux == NULL )
+ {
+ return NULL;
+ }
- return thisCmd;
- }
- }
+ return thisCmd;
+ }
+ }
- return NULL;
+ return NULL;
}
-static void
-startUpdateServer()
+static void startUpdateServer()
{
- timeUpdate = time(NULL);
+ timeUpdate = time(NULL);
}
-time_t
-getUpdateServer()
+time_t getUpdateServer()
{
- return time(NULL) - timeUpdate;
+ return time(NULL) - timeUpdate;
}
-client_t *
-newAnyClient()
+client_t* newAnyClient()
{
- client_t *new;
+ client_t *new;
- new = malloc(sizeof(client_t));
- memset(new, 0, sizeof(client_t));
+ new = malloc( sizeof(client_t) );
+ memset(new, 0, sizeof(client_t));
- new->status = NET_STATUS_OK;
- new->listRecvMsg = newList();
- new->listSendMsg = newCheckFront();
- new->listSeesShot = newList();
- new->protect = newProtect();
+ new->status = NET_STATUS_OK;
+ new->listRecvMsg = newList();
+ new->listSendMsg = newCheckFront();
+ new->listSeesShot = newList();
+ new->protect = newProtect();
- return new;
+ return new;
}
-void
-destroyAnyClient(client_t * p)
+void destroyAnyClient(client_t *p)
{
- assert(p != NULL);
+ assert( p != NULL );
- //eventMsgInCheckFront(p);
- destroyListItem(p->listRecvMsg, free);
- destroyListItem(p->listSeesShot, free);
- destroyCheckFront(p->listSendMsg);
+ //eventMsgInCheckFront(p);
+ destroyListItem(p->listRecvMsg, free);
+ destroyListItem(p->listSeesShot, free);
+ destroyCheckFront(p->listSendMsg);
- destroyProtect(p->protect);
+ destroyProtect(p->protect);
- if (p->tux != NULL) {
+ if( p->tux != NULL )
+ {
#ifdef PUBLIC_SERVER
- addPlayerInHighScore(p->tux->name, p->tux->score);
+ addPlayerInHighScore(p->tux->name, p->tux->score);
#endif
- delObjectFromSpaceWithObject(getCurrentArena()->spaceTux, p->tux,
- destroyTux);
- }
+ delObjectFromSpaceWithObject(getCurrentArena()->spaceTux, p->tux, destroyTux);
+ }
- free(p);
+ free(p);
}
-static void
-eventDelClientFromListClient(client_t * client)
+static void eventDelClientFromListClient(client_t *client)
{
- int offset;
+ int offset;
- offset = searchListItem(listClient, client);
+ offset = searchListItem(listClient, client);
- assert(offset != -1);
+ assert( offset != -1 );
- delListItem(listClient, offset, destroyUdpClient);
+ delListItem(listClient, offset, destroyUdpClient);
}
-static void
-delZombieCLient(void *p_nothink)
+static void delZombieCLient(void *p_nothink)
{
- client_t *thisClient;
- my_time_t currentTime;
- int i;
-
- currentTime = getMyTime();
-
- for (i = 0; i < listClient->count; i++) {
- thisClient = (client_t *) listClient->list[i];
-
- if (isDown(thisClient->protect) == TRUE) {
- proto_send_end_server(PROTO_SEND_ONE, thisClient);
- eventMsgInCheckFront(thisClient);
- thisClient->status = NET_STATUS_ZOMBIE;
- }
-
- if (thisClient->status == NET_STATUS_ZOMBIE) {
- if (thisClient->tux != NULL) {
- proto_send_del_server(PROTO_SEND_ALL, NULL, thisClient->tux->id);
- }
-
- eventDelClientFromListClient(thisClient);
- i--;
- }
- }
+ client_t *thisClient;
+ my_time_t currentTime;
+ int i;
+
+ currentTime = getMyTime();
+
+ for( i = 0 ; i < listClient->count; i++)
+ {
+ thisClient = (client_t *) listClient->list[i];
+
+ if( isDown(thisClient->protect) == TRUE )
+ {
+ proto_send_end_server(PROTO_SEND_ONE, thisClient);
+ eventMsgInCheckFront(thisClient);
+ thisClient->status = NET_STATUS_ZOMBIE;
+ }
+
+ if( thisClient->status == NET_STATUS_ZOMBIE )
+ {
+ if( thisClient->tux != NULL )
+ {
+ proto_send_del_server(PROTO_SEND_ALL, NULL, thisClient->tux->id);
+ }
+
+ eventDelClientFromListClient(thisClient);
+ i--;
+ }
+ }
}
-static void
-eventPeriodicSyncClient(void *p_nothink)
+static void eventPeriodicSyncClient(void *p_nothink)
{
- client_t *thisClientSend;
- tux_t *thisTux;
- int i;
+ client_t *thisClientSend;
+ tux_t *thisTux;
+ int i;
#ifndef PUBLIC_SERVER
- proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, NULL,
- getControlTux(TUX_CONTROL_KEYBOARD_RIGHT));
+ proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, NULL, getControlTux(TUX_CONTROL_KEYBOARD_RIGHT));
#endif
- for (i = 0; i < listClient->count; i++) {
- thisClientSend = (client_t *) listClient->list[i];
- thisTux = thisClientSend->tux;
+ for( i = 0 ; i < listClient->count; i++ )
+ {
+ thisClientSend = (client_t *) listClient->list[i];
+ thisTux = thisClientSend->tux;
- if (thisTux == NULL) {
- continue;
- }
+ if( thisTux == NULL )
+ {
+ continue;
+ }
- //proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, thisClientSend, thisTux);
- proto_send_newtux_server(PROTO_SEND_BUT, thisClientSend, thisTux);
- }
+ //proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, thisClientSend, thisTux);
+ proto_send_newtux_server(PROTO_SEND_BUT, thisClientSend, thisTux);
+ }
}
-static void
-eventSendPingClients(void *p_nothink)
+static void eventSendPingClients(void *p_nothink)
{
- proto_send_ping_server(PROTO_SEND_ALL, NULL);
+ proto_send_ping_server(PROTO_SEND_ALL, NULL);
}
-void
-setServerTimer()
+void setServerTimer()
{
- if (listServerTimer != NULL) {
- destroyTimer(listServerTimer);
- }
-
- restartTimer();
- listServerTimer = newTimer();
-
- addTaskToTimer(listServerTimer, TIMER_PERIODIC, delZombieCLient, NULL,
- SERVER_TIMEOUT);
- addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventPeriodicSyncClient,
- NULL, SERVER_TIME_SYNC);
- addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventSendPingClients, NULL,
- SERVER_TIME_PING);
+ if( listServerTimer != NULL )
+ {
+ destroyTimer(listServerTimer);
+ }
+
+ restartTimer();
+ listServerTimer = newTimer();
+
+ addTaskToTimer(listServerTimer, TIMER_PERIODIC, delZombieCLient, NULL, SERVER_TIMEOUT);
+ addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventPeriodicSyncClient, NULL, SERVER_TIME_SYNC);
+ addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventSendPingClients, NULL, SERVER_TIME_PING);
}
-int
-initServer(char *ip4, int port4, char *ip6, int port6)
+int initServer(char *ip4, int port4, char *ip6, int port6)
{
- int ret;
+ int ret;
- startUpdateServer();
- listServerTimer = NULL;
+ startUpdateServer();
+ listServerTimer = NULL;
- listClient = newList();
+ listClient = newList();
- setServerMaxClients(SERVER_MAX_CLIENTS);
- setServerTimer();
+ setServerMaxClients(SERVER_MAX_CLIENTS);
+ setServerTimer();
- ret = initUdpServer(ip4, port4, ip6, port6);
+ ret = initUdpServer(ip4, port4, ip6, port6);
- if (ret == 0) {
- return -1;
- }
+ if( ret == 0 )
+ {
+ return -1;
+ }
- return ret;
+ return ret;
}
-list_t *
-getListServerClient()
+list_t* getListServerClient()
{
- return listClient;
+ return listClient;
}
-int
-getServerMaxClients()
+int getServerMaxClients()
{
- return maxClients;
+ return maxClients;
}
-void
-setServerMaxClients(int n)
+void setServerMaxClients(int n)
{
- maxClients = n;
+ maxClients = n;
}
-void
-sendClient(client_t * p, char *msg)
+void sendClient(client_t *p, char *msg)
{
- assert(p != NULL);
- assert(msg != NULL);
+ assert( p != NULL );
+ assert( msg != NULL );
- if (p->status != NET_STATUS_ZOMBIE) {
- int ret = -1; // no Warnnings
+ if( p->status != NET_STATUS_ZOMBIE )
+ {
+ int ret = -1; // no Warnnings
#ifndef PUBLIC_SERVER
- if (isParamFlag("--send")) {
- printf(_("Sending: \"%s\""), msg);
- }
+ if( isParamFlag("--send") )
+ {
+ printf(_("Sending: \"%s\""), msg);
+ }
#endif
- ret = writeUdpSocket(p->socket_udp, p->socket_udp, msg, strlen(msg));
+ ret = writeUdpSocket(p->socket_udp, p->socket_udp, msg, strlen(msg));
- if (ret <= 0) {
- p->status = NET_STATUS_ZOMBIE;
- }
- }
+ if( ret <= 0 )
+ {
+ p->status = NET_STATUS_ZOMBIE;
+ }
+ }
}
-static void
-eventClientWorkRecvList(client_t * client)
+static void eventClientWorkRecvList(client_t *client)
{
- proto_cmd_server_t *protoCmd;
- char *line;
- int i;
-
- assert(client != NULL);
+ proto_cmd_server_t* protoCmd;
+ char *line;
+ int i;
- /* obsluha udalosti od clientov */
+ assert( client != NULL );
- for (i = 0; i < client->listRecvMsg->count; i++) {
- line = (char *) client->listRecvMsg->list[i];
- protoCmd = findCmdProto(client, line);
+ /* obsluha udalosti od clientov */
+
+ for( i = 0 ; i < client->listRecvMsg->count ; i++ )
+ {
+ line = (char *)client->listRecvMsg->list[i];
+ protoCmd = findCmdProto(client, line);
#ifndef PUBLIC_SERVER
- if (isParamFlag("--recv")) {
- printf(_("Recieved: \"%s\""), line);
- }
+ if( isParamFlag("--recv") )
+ {
+ printf(_("Recieved: \"%s\""), line);
+ }
#endif
- if (protoCmd != NULL) {
- protoCmd->fce_proto(client, line);
- rereshLastPing(client->protect);
- }
- else {
- proto_send_error_server(PROTO_SEND_ONE, client,
- PROTO_ERROR_CODE_BAD_COMMAND);
- }
- }
-
- destroyListItem(client->listRecvMsg, free);
- client->listRecvMsg = newList();
+ if( protoCmd != NULL )
+ {
+ protoCmd->fce_proto(client, line);
+ rereshLastPing(client->protect);
+ }
+ else
+ {
+ proto_send_error_server(PROTO_SEND_ONE, client, PROTO_ERROR_CODE_BAD_COMMAND);
+ }
+ }
+
+ destroyListItem(client->listRecvMsg, free);
+ client->listRecvMsg = newList();
}
-static void
-porcesListClients()
+static void porcesListClients()
{
- int i;
- client_t *thisClient;
+ int i;
+ client_t *thisClient;
- for (i = 0; i < listClient->count; i++) {
- thisClient = (client_t *) listClient->list[i];
+ for( i = 0 ; i < listClient->count; i++)
+ {
+ thisClient = (client_t *) listClient->list[i];
- eventClientWorkRecvList(thisClient);
- eventMsgInCheckFront(thisClient);
- }
+ eventClientWorkRecvList(thisClient);
+ eventMsgInCheckFront(thisClient);
+ }
}
-void
-eventServer()
+void eventServer()
{
#ifndef PUBLIC_SERVER
- int count;
+ int count;
- do {
- restartSelect();
- setServerUdpSelect();
- actionSelect();
- count = selectServerUdpSocket();
- } while (count > 0);
+ do{
+ restartSelect();
+ setServerUdpSelect();
+ actionSelect();
+ count = selectServerUdpSocket();
+ }while( count > 0 );
#endif
#ifdef PUBLIC_SERVER
- int ret;
+ int ret;
- restartSelect();
+ restartSelect();
- setServerUdpSelect();
+ setServerUdpSelect();
- ret = actionSelect();
+ ret = actionSelect();
- if (ret > 0) {
- selectServerUdpSocket();
- }
+ if( ret > 0 )
+ {
+ selectServerUdpSocket();
+ }
#endif
- porcesListClients();
- eventTimer(listServerTimer);
+ porcesListClients();
+ eventTimer(listServerTimer);
}
-void
-quitServer()
+void quitServer()
{
- proto_send_end_server(PROTO_SEND_ALL, NULL);
+ proto_send_end_server(PROTO_SEND_ALL, NULL);
- assert(listClient != NULL);
+ assert( listClient != NULL );
- destroyListItem(listClient, destroyUdpClient);
+ destroyListItem(listClient, destroyUdpClient);
- destroyTimer(listServerTimer);
+ destroyTimer(listServerTimer);
- quitUdpServer();
+ quitUdpServer();
}