diff options
| author | Mario Kilies <MarioKilies@GMX.net> | 2011-01-24 14:17:55 +0100 |
|---|---|---|
| committer | Mario Kilies <MarioKilies@GMX.net> | 2011-01-24 14:17:55 +0100 |
| commit | 5f956e035e648901645fd43d2e28fc6f8c49a585 (patch) | |
| tree | 60e183934c44934c1c7f5b964f510778962254e9 /src/net/comm.c | |
| parent | 6820c635353b25f12401f8610c140c8608051ded (diff) | |
Huge refactoring of network related code.
Diffstat (limited to 'src/net/comm.c')
| -rw-r--r-- | src/net/comm.c | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/net/comm.c b/src/net/comm.c index 5a283db..cbcfc44 100644 --- a/src/net/comm.c +++ b/src/net/comm.c @@ -25,29 +25,31 @@ bool net_recv(int sock, const msg_type_t type) recv(sock, &m.hdr, sizeof(msg_header_t), 0); // Remove message header from socket recv(sock, m.payload, m.hdr.payload_length, 0);// And then receive the payload + printf("net_recv: received msg type %d with payload length %d\n", m.hdr.type, m.hdr.payload_length); + switch(type) { case msg_type_hello: - result = server_recv_hello(m.payload, m.hdr.payload_length); + result = server_parse_hello(m.payload, m.hdr.payload_length); break; case msg_type_start_game: - result = client_recv_player_list(m.payload, m.hdr.payload_length); + result = client_parse_player_list(m.payload, m.hdr.payload_length); break; - case msg_type_deal_cards: - result = client_recv_deal_cards(m.payload, m.hdr.payload_length); + case msg_type_deal_hand: + result = client_parse_deal_hand(m.payload, m.hdr.payload_length); break; - case msg_type_init_stacks: - printf("not yet implemented: msg_type_init_stacks\n"); + case msg_type_initial_stacks: + printf("not yet implemented: msg_type_initial_stacks\n"); exit(EXIT_FAILURE); break; case msg_type_selected_card: - result = server_recv_selected_card(m.payload, m.hdr.payload_length); + result = server_parse_selected_card(m.payload, m.hdr.payload_length); break; case msg_type_selected_stack_c: - result = server_recv_selected_stack(m.payload, m.hdr.payload_length); + result = server_parse_selected_stack(m.payload, m.hdr.payload_length); break; case msg_type_selected_stack_s: - result = client_recv_selected_stack(m.payload, m.hdr.payload_length); + result = client_parse_selected_stack(m.payload, m.hdr.payload_length); break; default: printf("net_recv: Unknown message type %d received!\n", type); @@ -60,47 +62,47 @@ bool net_recv(int sock, const msg_type_t type) return result; } -bool net_send(int sock, const msg_type_t type, void* param) +bool net_send(int sock, const msg_type_t type, void *data) { bool result = true; - uint8_t payload_len = 255; - uint8_t buf[payload_len+2]; // should be enough for all packet types - buf[0] = type; + msg_t m; + m.payload = malloc(NET_MSG_MAX_PAYLOAD_LENGTH); switch(type) { case msg_type_hello: - payload_len = client_send_hello(&buf[2], payload_len); + client_prep_hello(&m); break; case msg_type_selected_card: - payload_len = client_send_selected_card(&buf[2], payload_len); + client_prep_selected_card(&m); break; case msg_type_selected_stack_c: - payload_len = client_send_selected_stack(&buf[2], payload_len); + client_prep_selected_stack(&m); break; case msg_type_start_game: - payload_len = server_send_start_game(&buf[2], payload_len); + server_prep_start_game(&m); break; case msg_type_selected_stack_s: - payload_len = server_send_selected_stack(&buf[2], payload_len); + server_prep_selected_stack(&m); break; - case msg_type_deal_cards: - payload_len = server_send_deal_cards(&buf[2], payload_len, param); + case msg_type_deal_hand: + server_prep_deal_hand(&m, data); break; - case msg_type_initial_stack: - payload_len = server_send_initial_stacks(&buf[2], payload_len); + case msg_type_initial_stacks: + server_prep_initial_stacks(&m); break; default: - printf("net_send: Unknown message type %d received\n", type); + printf("net_send: Unknown message type %d given\n", type); exit(EXIT_FAILURE); break; } - buf[1] = payload_len; + printf("net_send: sending msg type %d with payload length %d\n", m.hdr.type, m.hdr.payload_length); + send(sock, &m, sizeof(msg_header_t), 0); // Send message header first + send(sock, m.payload, m.hdr.payload_length, 0); // Then send payload - send(sock, buf, payload_len+2, 0); + free(m.payload); return result; } - |
