summaryrefslogtreecommitdiff
path: root/src/client/client.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/client/client.c
parente12753d2ec9db83ec08bb9db63902a82fb245cdd (diff)
Revert "X"
This reverts commit e12753d2ec9db83ec08bb9db63902a82fb245cdd.
Diffstat (limited to 'src/client/client.c')
-rw-r--r--src/client/client.c456
1 files changed, 232 insertions, 224 deletions
diff --git a/src/client/client.c b/src/client/client.c
index 808dc2b..7512ab8 100644
--- a/src/client/client.c
+++ b/src/client/client.c
@@ -47,334 +47,342 @@ static int traffic_up;
typedef struct proto_cmd_client_struct
{
- char *name;
- int len;
- void (*fce_proto) (char *msg);
+ char *name;
+ int len;
+ void (*fce_proto)(char *msg);
} proto_cmd_client_t;
-static proto_cmd_client_t proto_cmd_list[] = {
- {.name = "error",.len = 5,.fce_proto = proto_recv_error_client},
- {.name = "init",.len = 4,.fce_proto = proto_recv_init_client},
- {.name = "event",.len = 5,.fce_proto = proto_recv_event_client},
- {.name = "newtux",.len = 6,.fce_proto = proto_recv_newtux_client},
- {.name = "del",.len = 3,.fce_proto = proto_recv_del_client},
- {.name = "additem",.len = 7,.fce_proto = proto_recv_additem_client},
- {.name = "shot",.len = 4,.fce_proto = proto_recv_shot_client},
- {.name = "kill",.len = 4,.fce_proto = proto_recv_kill_client},
- {.name = "module",.len = 6,.fce_proto = proto_recv_module_client},
- {.name = "chat",.len = 4,.fce_proto = proto_recv_chat_client},
- {.name = "ping",.len = 4,.fce_proto = proto_recv_ping_client},
- {.name = "end",.len = 3,.fce_proto = proto_recv_end_client},
- {.name = "",.len = 0,.fce_proto = NULL},
+static proto_cmd_client_t proto_cmd_list[] =
+{
+ { .name = "error", .len = 5, .fce_proto = proto_recv_error_client },
+ { .name = "init", .len = 4, .fce_proto = proto_recv_init_client },
+ { .name = "event", .len = 5, .fce_proto = proto_recv_event_client },
+ { .name = "newtux", .len = 6, .fce_proto = proto_recv_newtux_client },
+ { .name = "del", .len = 3, .fce_proto = proto_recv_del_client },
+ { .name = "additem", .len = 7, .fce_proto = proto_recv_additem_client },
+ { .name = "shot", .len = 4, .fce_proto = proto_recv_shot_client },
+ { .name = "kill", .len = 4, .fce_proto = proto_recv_kill_client },
+ { .name = "module", .len = 6, .fce_proto = proto_recv_module_client },
+ { .name = "chat", .len = 4, .fce_proto = proto_recv_chat_client },
+ { .name = "ping", .len = 4, .fce_proto = proto_recv_ping_client },
+ { .name = "end", .len = 3, .fce_proto = proto_recv_end_client },
+ { .name = "", .len = 0, .fce_proto = NULL },
};
-static proto_cmd_client_t *
-findCmdProto(char *msg)
+static proto_cmd_client_t* findCmdProto(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_client_t *thisCmd;
+ len = strlen(msg);
- thisCmd = &proto_cmd_list[i];
+ for( i = 0 ; proto_cmd_list[i].len != 0 ; i++ )
+ {
+ proto_cmd_client_t *thisCmd;
+
+ thisCmd = &proto_cmd_list[i];
- if (len >= thisCmd->len
- && strncmp(msg, thisCmd->name, thisCmd->len) == 0) {
- return thisCmd;
- }
- }
+ if( len >= thisCmd->len && strncmp(msg, thisCmd->name, thisCmd->len) == 0 )
+ {
+ return thisCmd;
+ }
+ }
- return NULL;
+ return NULL;
}
-static int
-initUdpClient(char *ip, int port, int proto)
+static int initUdpClient(char *ip, int port, int proto)
{
- sock_server_udp = connectUdpSocket(ip, port, proto);
+ sock_server_udp = connectUdpSocket(ip, port, proto);
- if (sock_server_udp == NULL) {
- return -1;
- }
+ if( sock_server_udp == NULL )
+ {
+ return -1;
+ }
#ifdef DEBUG
- printf(_("Connected to: %s on port: %d via UDP\n"), ip, port);
+ printf(_("Connected to: %s on port: %d via UDP\n"), ip, port);
#endif
- return 0;
+ return 0;
}
-int
-initClient(char *ip, int port, int proto)
+int initClient(char *ip, int port, int proto)
{
- char name[STR_NAME_SIZE];
- int ret;
+ char name[STR_NAME_SIZE];
+ int ret;
- listRecvMsg = newList();
- lastPing = getMyTime();
- lastPingServerAlive = getMyTime();
+ listRecvMsg = newList();
+ lastPing = getMyTime();
+ lastPingServerAlive = getMyTime();
#ifdef SUPPORT_TRAFFIC
- lastTraffic = getMyTime();
- traffic_down = 0;
- traffic_up = 0;
+ lastTraffic = getMyTime();
+ traffic_down = 0;
+ traffic_up = 0;
#endif
- clientRecvBuffer = newBuffer(CLIENT_BUFFER_LIMIT);
- clientSendBuffer = newBuffer(CLIENT_BUFFER_LIMIT);
+ clientRecvBuffer = newBuffer(CLIENT_BUFFER_LIMIT);
+ clientSendBuffer = newBuffer(CLIENT_BUFFER_LIMIT);
- ret = initUdpClient(ip, port, proto);
+ ret = initUdpClient(ip, port, proto);
- if (ret < 0) {
- return -1;
- }
+ if( ret < 0 )
+ {
+ return -1;
+ }
- getSettingNameRight(name);
- proto_send_hello_client(name);
+ getSettingNameRight(name);
+ proto_send_hello_client(name);
- return 0;
+ return 0;
}
-static void
-errorWithServer()
+static void errorWithServer()
{
- fprintf(stderr, _("Server did not respond!\n"));
- setMsgToAnalyze(_
- ("Server is not running or being blocked. I was unable to connect."));
- setWorldEnd();
+ fprintf(stderr, _("Server did not respond!\n"));
+ setMsgToAnalyze(_("Server is not running or being blocked. I was unable to connect."));
+ setWorldEnd();
}
-void
-sendServer(char *msg)
+void sendServer(char *msg)
{
- int ret;
+ int ret;
- assert(msg != NULL);
+ assert( msg != NULL );
- ret = -1;
+ ret = -1;
#ifndef PUBLIC_SERVER
- if (isParamFlag("--send")) {
- printf(_("Sending: \"%s\""), msg);
- }
+ if( isParamFlag("--send") )
+ {
+ printf(_("Sending: \"%s\""), msg);
+ }
#endif
#ifdef SUPPORT_TRAFFIC
- traffic_up += strlen(msg);
+ traffic_up += strlen(msg);
#endif
- if (sock_server_udp != NULL) {
- ret =
- writeUdpSocket(sock_server_udp, sock_server_udp, msg, strlen(msg));
- }
+ if( sock_server_udp != NULL )
+ {
+ ret = writeUdpSocket(sock_server_udp, sock_server_udp, msg, strlen(msg));
+ }
- if (ret < 0) {
- errorWithServer();
- return;
- }
+ if( ret < 0 )
+ {
+ errorWithServer();
+ return;
+ }
}
-static int
-eventServerSelect()
+static int eventServerSelect()
{
- char buffer[STR_PROTO_SIZE];
- int ret;
-
- memset(buffer, 0, STR_PROTO_SIZE);
- ret = -1;
-
- if (sock_server_udp != NULL) {
- ret =
- readUdpSocket(sock_server_udp, sock_server_udp, buffer,
- STR_PROTO_SIZE - 1);
- }
-
- if (ret < 0) {
- errorWithServer();
- return ret;
- }
+ char buffer[STR_PROTO_SIZE];
+ int ret;
+
+ memset(buffer, 0, STR_PROTO_SIZE);
+ ret = -1;
+
+ if( sock_server_udp != NULL )
+ {
+ ret = readUdpSocket(sock_server_udp, sock_server_udp, buffer, STR_PROTO_SIZE-1);
+ }
+
+ if( ret < 0 )
+ {
+ errorWithServer();
+ return ret;
+ }
#ifdef SUPPORT_TRAFFIC
- traffic_down += ret;
+ traffic_down += ret;
#endif
- addList(listRecvMsg, strdup(buffer));
+ addList(listRecvMsg, strdup(buffer));
#if 0
- if (addBuffer(clientRecvBuffer, buffer, ret) < 0) {
- errorWithServer();
- return ret;
- }
-
- while (getBufferLine(clientRecvBuffer, buffer, STR_PROTO_SIZE) >= 0) {
- if (strlen(buffer) > 0) {
- addList(listRecvMsg, strdup(buffer));
- }
- }
+ if( addBuffer(clientRecvBuffer, buffer, ret) < 0 )
+ {
+ errorWithServer();
+ return ret;
+ }
+
+ while( getBufferLine(clientRecvBuffer, buffer, STR_PROTO_SIZE) >= 0 )
+ {
+ if( strlen(buffer) > 0)
+ {
+ addList(listRecvMsg, strdup(buffer) );
+ }
+ }
#endif
- return ret;
+ return ret;
}
-static void
-eventClientWorkRecvList()
+static void eventClientWorkRecvList()
{
- proto_cmd_client_t *protoCmd;
- char *line;
- int i;
-
- /* obsluha udalosti od servera */
+ proto_cmd_client_t *protoCmd;
+ char *line;
+ int i;
- assert(listRecvMsg != NULL);
+ /* obsluha udalosti od servera */
+
+ assert( listRecvMsg != NULL );
- for (i = 0; i < listRecvMsg->count; i++) {
- line = (char *) listRecvMsg->list[i];
- protoCmd = findCmdProto(line);
+ for( i = 0 ; i < listRecvMsg->count ; i++ )
+ {
+ line = (char *)listRecvMsg->list[i];
+ protoCmd = findCmdProto(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(line);
- lastPingServerAlive = getMyTime();
- }
- }
-
- destroyListItem(listRecvMsg, free);
- listRecvMsg = newList();
+ if( protoCmd != NULL )
+ {
+ protoCmd->fce_proto(line);
+ lastPingServerAlive = getMyTime();
+ }
+ }
+
+ destroyListItem(listRecvMsg, free);
+ listRecvMsg = newList();
}
-static void
-eventPingServer()
+static void eventPingServer()
{
- my_time_t currentTime;
+ my_time_t currentTime;
- currentTime = getMyTime();
+ currentTime = getMyTime();
- if (currentTime - lastPing > CLIENT_TIMEOUT) {
- proto_send_ping_client();
- lastPing = getMyTime();
- }
+ if( currentTime - lastPing > CLIENT_TIMEOUT )
+ {
+ proto_send_ping_client();
+ lastPing = getMyTime();
+ }
}
-static bool_t
-isServerAlive()
+static bool_t isServerAlive()
{
- my_time_t currentTime;
+ my_time_t currentTime;
- currentTime = getMyTime();
+ currentTime = getMyTime();
- if (currentTime - lastPingServerAlive > SERVER_TIMEOUT_ALIVE) {
- return FALSE;
- }
+ if( currentTime - lastPingServerAlive > SERVER_TIMEOUT_ALIVE )
+ {
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-static void
-selectClientSocket()
+static void selectClientSocket()
{
- fd_set readfds;
- struct timeval tv;
- int max_fd;
- int sock;
- bool_t isNext;
-
- max_fd = 0;
- sock = 0;
-
- if (sock_server_udp != NULL) {
- if (isServerAlive() == FALSE) {
- errorWithServer();
- return;
- }
- }
-
- do {
- isNext = FALSE;
-
- tv.tv_sec = 0;
- tv.tv_usec = 0;
-
- FD_ZERO(&readfds);
-
- if (sock_server_udp != NULL) {
- sock = sock_server_udp->sock;
- }
-
- FD_SET(sock, &readfds);
- max_fd = sock;
- select(max_fd + 1, &readfds, (fd_set *) NULL, (fd_set *) NULL, &tv);
-
- if (FD_ISSET(sock, &readfds)) {
- if (eventServerSelect() > 0) {
- isNext = TRUE;
- }
- }
-
- } while (isNext == TRUE);
+ fd_set readfds;
+ struct timeval tv;
+ int max_fd;
+ int sock;
+ bool_t isNext;
+
+ max_fd = 0;
+ sock = 0;
+
+ if( sock_server_udp != NULL )
+ {
+ if( isServerAlive() == FALSE )
+ {
+ errorWithServer();
+ return;
+ }
+ }
+
+ do{
+ isNext = FALSE;
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+
+ FD_ZERO(&readfds);
+
+ if( sock_server_udp != NULL )
+ {
+ sock = sock_server_udp->sock;
+ }
+
+ FD_SET(sock, &readfds);
+ max_fd = sock;
+ select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv);
+
+ if( FD_ISSET(sock, &readfds) )
+ {
+ if( eventServerSelect() > 0 )
+ {
+ isNext = TRUE;
+ }
+ }
+
+ }while( isNext == TRUE );
}
#ifdef SUPPORT_TRAFFIC
-static void
-eventTraffic()
+static void eventTraffic()
{
- my_time_t currentTime;
+ my_time_t currentTime;
- currentTime = getMyTime();
+ currentTime = getMyTime();
- if (currentTime - lastTraffic > 5000) {
- lastTraffic = currentTime;
+ if( currentTime - lastTraffic > 5000 )
+ {
+ lastTraffic = currentTime;
#ifdef DEBUG
- printf(_("down: %d\n")
- _("up : %d\n"), traffic_down, traffic_up);
+ printf(_("down: %d\n")
+ _("up : %d\n"),
+ traffic_down, traffic_up);
#endif
- traffic_down = 0;
- traffic_up = 0;
- }
+ traffic_down = 0;
+ traffic_up = 0;
+ }
}
#endif
-void
-eventClient()
+void eventClient()
{
#ifdef SUPPORT_TRAFFIC
- eventTraffic();
+ eventTraffic();
#endif
- eventPingServer();
- selectClientSocket();
- eventClientWorkRecvList();
+ eventPingServer();
+ selectClientSocket();
+ eventClientWorkRecvList();
}
-static void
-quitUdpClient()
+static void quitUdpClient()
{
- assert(sock_server_udp != NULL);
- closeUdpSocket(sock_server_udp);
+ assert( sock_server_udp != NULL );
+ closeUdpSocket(sock_server_udp);
#ifdef DEBUG
- printf(_("Closing UDP connection.\n"));
+ printf(_("Closing UDP connection.\n"));
#endif
}
-void
-quitClient()
+void quitClient()
{
- proto_send_end_client();
+ proto_send_end_client();
- assert(listRecvMsg != NULL);
+ assert( listRecvMsg != NULL );
- destroyListItem(listRecvMsg, free);
- destroyBuffer(clientRecvBuffer);
- destroyBuffer(clientSendBuffer);
+ destroyListItem(listRecvMsg, free);
+ destroyBuffer(clientRecvBuffer);
+ destroyBuffer(clientSendBuffer);
- if (sock_server_udp != NULL) {
- quitUdpClient();
- }
+ if( sock_server_udp != NULL )
+ {
+ quitUdpClient();
+ }
}
+