|
4 | 4 | #include <unistd.h> |
5 | 5 | #include <arpa/inet.h> |
6 | 6 |
|
7 | | -#include "tictactoe.h" |
8 | 7 | #include "high_score.h" |
| 8 | +#include "helper.h" |
9 | 9 |
|
10 | | -//void add_winner(int client_fd, enum Player winner) { |
11 | | -// //TODO |
12 | | -//} |
| 10 | +#define MAX_BUF_SIZE (0x100) |
| 11 | +char winners_list[MAX_BUF_SIZE] = {0}; |
| 12 | +char outro_message[MAX_BUF_SIZE] = {0}; |
13 | 13 |
|
14 | | -#define MAX_BUF_SIZE 0x100 |
15 | | -char winners_list[MAX_BUF_SIZE]; |
16 | | -char intro[MAX_BUF_SIZE]; |
17 | | -char outro[MAX_BUF_SIZE]; |
18 | | - |
19 | | -void init_msgs() |
| 14 | +bool handle_reset_winner_data(int client_fd, char* client_str) |
20 | 15 | { |
21 | 16 | memset(winners_list, sizeof(winners_list), 0); |
22 | | - memset(intro, sizeof(winners_list), 0); |
23 | | - memset(outro, sizeof(winners_list), 0); |
24 | | - |
25 | | - strcpy(intro, "Special Congratulations to our Winners:\n" ); |
26 | | - strcpy(outro, "And Better Luck to our other participants:\n" ); |
27 | | -} |
28 | | - |
29 | | -char * handle_read(int client_fd, int * num_read) |
30 | | -{ |
31 | | - char * dst_buf = malloc(MAX_BUF_SIZE); |
32 | | - int bytes_read = recv(client_fd, dst_buf, MAX_BUF_SIZE, 0); |
33 | | - if (bytes_read == -1) { |
34 | | - perror("recv from get_str_from_client in len"); |
35 | | - } |
36 | | - if (bytes_read == 0) { |
37 | | - printf("client disconnected in str len in get_str_from_client\n"); |
38 | | - return false; |
39 | | - } |
40 | | - if (bytes_read != sizeof(dst_buf)) { |
41 | | - printf("client didn't send enough bytes for string length in get_str_from_client\n"); |
42 | | - return false; |
43 | | - } |
44 | | - |
45 | | - *num_read = bytes_read; |
46 | | - return dst_buf; |
47 | | -} |
48 | | - |
49 | | -int display_to_user(int client_fd, char * msg_buf) |
50 | | -{ |
51 | | - int err = send(client_fd, msg_buf, strlen(msg_buf), 0); |
52 | | - if (err < 0) { |
53 | | - perror("send len in respond_str_to_client"); |
54 | | - } |
55 | | - err = send(client_fd, msg_buf, strlen(msg_buf), 0); |
56 | | - if (err < 0) { |
57 | | - perror("send str in respond_str_to_client"); |
58 | | - } |
59 | | - return err; |
60 | | -} |
61 | | - |
62 | | -bool handle_add_winner(int client_fd, char* client_str) { |
63 | | - char buff[MAX_BUF_SIZE]; |
64 | | - int num_read = 0; |
65 | | - char * user_str = handle_read(client_fd, &num_read); |
66 | | - int bytes_written = snprintf(buff, num_read, "%s\n", user_str); |
67 | | - free(user_str); |
68 | | - |
69 | | - bytes_written = snprintf(winners_list, MAX_BUF_SIZE, "%s", buff); |
| 17 | + memset(outro_message, sizeof(outro_message), 0); |
| 18 | + strcpy(outro_message, "\nBetter Luck to our other participants next time!\n" ); |
70 | 19 | return true; |
71 | 20 | } |
72 | 21 |
|
73 | | -bool handle_set_intro(int client_fd, char* client_str) { |
74 | | - int num_read = 0; |
75 | | - char * user_str = handle_read(client_fd, &num_read); |
76 | | - strncpy(intro, user_str, num_read); |
77 | | - free(user_str); |
| 22 | +bool handle_add_winner(int client_fd, char* client_str) { |
| 23 | + char winner_name[0x80]; |
| 24 | + if (!get_buffer_from_client(client_fd, winner_name, sizeof(winner_name))) { |
| 25 | + printf("handle_add_winner error: get_buffer_from_client failed\n"); |
| 26 | + return false; |
| 27 | + } |
| 28 | + strncpy(winners_list, winner_name, sizeof(winners_list)); |
| 29 | + printf("handle_add_winner success!\n"); |
78 | 30 | return true; |
79 | 31 | } |
80 | 32 |
|
81 | | -bool handle_set_outro(int client_fd, char* client_str) { |
82 | | - int num_read = 0; |
83 | | - char * user_str = handle_read(client_fd, &num_read); |
84 | | - strncpy(intro, user_str, num_read); |
85 | | - free(user_str); |
| 33 | +bool handle_set_outro_message(int client_fd, char* client_str) { |
| 34 | + if (!get_buffer_from_client(client_fd, outro_message, sizeof(outro_message))) { |
| 35 | + printf("handle_set_outro_message error: get_buffer_from_client failed\n"); |
| 36 | + return false; |
| 37 | + } |
| 38 | + printf("handle_set_outro_message success!\n"); |
86 | 39 | return true; |
87 | 40 | } |
88 | 41 |
|
89 | 42 | bool handle_report_winners(int client_fd, char* client_str) { |
90 | | - char msg_to_user[MAX_BUF_SIZE * 3]; |
91 | | - int bytes_written = snprintf(msg_to_user, sizeof(msg_to_user), "%s\n", intro); |
92 | | - bytes_written = snprintf(msg_to_user + bytes_written, sizeof(msg_to_user), "%s\n", winners_list); |
93 | | - bytes_written = snprintf(msg_to_user + bytes_written, sizeof(msg_to_user), "%s\n", outro); |
94 | | - |
95 | | - display_to_user(client_fd, msg_to_user); |
| 43 | + char msg_to_user[MAX_BUF_SIZE]; |
| 44 | + |
| 45 | + int bytes_written = snprintf(msg_to_user, sizeof(msg_to_user), "**WINNER LIST**\n%s\n*** :) ***", winners_list); |
| 46 | + snprintf(msg_to_user + bytes_written, sizeof(msg_to_user) - bytes_written, "%s", outro_message); |
| 47 | + respond_str_to_client(client_fd, msg_to_user); |
96 | 48 | return true; |
97 | 49 | } |
98 | | - |
99 | | -//bool handle_get_score(int client_fd, char* client_str) { |
100 | | -// |
101 | | -//} |
102 | | - |
0 commit comments