Skip to content

Commit d50df35

Browse files
committed
merge
2 parents c669beb + 1a75c5f commit d50df35

File tree

4 files changed

+33
-87
lines changed

4 files changed

+33
-87
lines changed

game_dispatcher.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ pkt_handler handlers[] = {
3737

3838
/* high scores */
3939
handle_add_winner,
40-
handle_set_intro,
41-
handle_set_outro,
42-
handle_report_winners
40+
41+
handle_reset_winner_data,
42+
handle_set_outro_message,
43+
handle_report_winners,
4344
};
4445

4546
void handle_client(int client_fd, char* client_str) {

high_score.c

+26-79
Original file line numberDiff line numberDiff line change
@@ -4,99 +4,46 @@
44
#include <unistd.h>
55
#include <arpa/inet.h>
66

7-
#include "tictactoe.h"
87
#include "high_score.h"
8+
#include "helper.h"
99

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};
1313

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)
2015
{
2116
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" );
7019
return true;
7120
}
7221

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");
7830
return true;
7931
}
8032

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");
8639
return true;
8740
}
8841

8942
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);
9648
return true;
9749
}
98-
99-
//bool handle_get_score(int client_fd, char* client_str) {
100-
//
101-
//}
102-

high_score.h

+2-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
#include <stdbool.h>
55
#include "tictactoe.h"
66

7-
//void add_winner(int client_fd, enum Player winner); //use a username or cookie or session id instead?
8-
void init_msgs();
7+
bool handle_reset_winner_data(int client_fd, char* client_str);
98

109
bool handle_add_winner(int client_fd, char* client_str); // Collect information about the winner from the user
11-
bool handle_set_intro(int client_fd, char* client_str);
12-
bool handle_set_outro(int client_fd, char* client_str);
10+
bool handle_set_outro_message(int client_fd, char* client_str);
1311
bool handle_report_winners(int client_fd, char* client_str);
1412

1513
#endif

main_game_server.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
int main (int argc, char *argv[]) {
1818
uses_assumed_sizes();
19-
init_msgs();
19+
handle_reset_winner_data(0, NULL);
2020
set_random_admin_password();
2121

2222
int server_fd, client_fd, err;

0 commit comments

Comments
 (0)