summaryrefslogtreecommitdiff
path: root/src/net/comm.c
diff options
context:
space:
mode:
authorMario Kilies <MarioKilies@GMX.net>2011-01-24 14:17:55 +0100
committerMario Kilies <MarioKilies@GMX.net>2011-01-24 14:17:55 +0100
commit5f956e035e648901645fd43d2e28fc6f8c49a585 (patch)
tree60e183934c44934c1c7f5b964f510778962254e9 /src/net/comm.c
parent6820c635353b25f12401f8610c140c8608051ded (diff)
Huge refactoring of network related code.
Diffstat (limited to 'src/net/comm.c')
-rw-r--r--src/net/comm.c54
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;
}
-