Move receiver_id parsing to Dispatcher
This commit is contained in:
parent
3c655cd491
commit
669574616d
2 changed files with 16 additions and 21 deletions
35
src/server.c
35
src/server.c
|
@ -240,27 +240,10 @@ int cmd_list_connected(int sender_id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Function for CMD_SEND_MESSAGE */
|
/* Function for CMD_SEND_MESSAGE */
|
||||||
int cmd_send_message(char *message, int sender_id) {
|
int cmd_send_message(int sender_id, int receiver_id, char* message) {
|
||||||
int receiver_id;
|
|
||||||
char *token;
|
|
||||||
char *endptr = NULL;
|
|
||||||
char *message_header;
|
|
||||||
char *formated_message;
|
char *formated_message;
|
||||||
size_t size_for_malloc;
|
size_t size_for_malloc;
|
||||||
|
|
||||||
/* Message should be: "<int receiver_id> <char* message>" */
|
|
||||||
|
|
||||||
/* Extract receiver_id */
|
|
||||||
token = strtok_r(message, " ", &message);
|
|
||||||
receiver_id = strtol(token, &endptr, 10);
|
|
||||||
if ((receiver_id < 0) || ((receiver_id == 0) && (endptr == token))) {
|
|
||||||
fprintf(stderr, "Invalid receiver ID \"%s\"\n", token);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (clients[receiver_id].id < 0) {
|
|
||||||
fprintf(stderr, "Receiver \"%d\" does not exist !\n", receiver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Message Sender : %d\n", sender_id);
|
printf("Message Sender : %d\n", sender_id);
|
||||||
printf("Message Receiver : %d\n", receiver_id);
|
printf("Message Receiver : %d\n", receiver_id);
|
||||||
printf("Message to send : %s\n", message);
|
printf("Message to send : %s\n", message);
|
||||||
|
@ -285,7 +268,7 @@ void *Dispatcher(void *arg) {
|
||||||
char *token;
|
char *token;
|
||||||
char *endptr = NULL;
|
char *endptr = NULL;
|
||||||
char *rest = message;
|
char *rest = message;
|
||||||
int n = 0, k = 0, sender_id;
|
int n = 0, k = 0, sender_id, receiver_id;
|
||||||
|
|
||||||
/* Message should be: "<int sender_id> <char command> [<char* rest>]" */
|
/* Message should be: "<int sender_id> <char command> [<char* rest>]" */
|
||||||
|
|
||||||
|
@ -324,7 +307,19 @@ void *Dispatcher(void *arg) {
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
printf("cmd_send_message (from %d)\n", sender_id);
|
printf("cmd_send_message (from %d)\n", sender_id);
|
||||||
cmd_send_message(rest, sender_id);
|
|
||||||
|
/* Extract receiver_id */
|
||||||
|
token = strtok_r(rest, " ", &rest);
|
||||||
|
receiver_id = strtol(token, &endptr, 10);
|
||||||
|
if ((receiver_id < 0) || ((receiver_id == 0) && (endptr == token))) {
|
||||||
|
fprintf(stderr, "Invalid receiver ID \"%s\"\n", token);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (clients[receiver_id].id < 0) {
|
||||||
|
fprintf(stderr, "Receiver \"%d\" does not exist !\n", receiver_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cmd_send_message(sender_id, receiver_id, rest);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "WARNING: %s is not a command\n", token);
|
fprintf(stderr, "WARNING: %s is not a command\n", token);
|
||||||
|
|
|
@ -26,7 +26,7 @@ int disconnect_client(int);
|
||||||
int cmd_list_connected(int);
|
int cmd_list_connected(int);
|
||||||
|
|
||||||
/* Function for CMD_SEND_MESSAGE */
|
/* Function for CMD_SEND_MESSAGE */
|
||||||
int cmd_send_message(char*, int);
|
int cmd_send_message(int, int, char*);
|
||||||
|
|
||||||
/* Thread, pop message from the message_buffer pipe, parse it and send it to the good ClientSender */
|
/* Thread, pop message from the message_buffer pipe, parse it and send it to the good ClientSender */
|
||||||
void *Dispatcher(void*);
|
void *Dispatcher(void*);
|
||||||
|
|
Loading…
Reference in a new issue