|
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