summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorMario Kilies <MarioKilies@GMX.net>2011-01-24 14:41:52 +0100
committerMario Kilies <MarioKilies@GMX.net>2011-01-24 14:41:52 +0100
commit5ab5af3b1472fe93eb164f5bbece798a402eea65 (patch)
treec544c9ce0392093890dbddc71606b75a1e6173d8 /src/net
parent1999007d45ba68626134b078f0b8a09430c58f5d (diff)
Second part of huge refactoring of networking related code.
Diffstat (limited to 'src/net')
-rw-r--r--src/net/client.c34
-rw-r--r--src/net/client.h8
-rw-r--r--src/net/comm.c12
-rw-r--r--src/net/server.c24
-rw-r--r--src/net/server.h8
5 files changed, 47 insertions, 39 deletions
diff --git a/src/net/client.c b/src/net/client.c
index 46b4ec3..bcbaf9a 100644
--- a/src/net/client.c
+++ b/src/net/client.c
@@ -62,23 +62,23 @@ int client_connect_server(const char* host, const char* port)
return sock;
}
-bool client_parse_player_list(const uint8_t* payload, const uint8_t data_len)
+bool client_parse_player_list(const msg_t *m)
{
- assert(payload != NULL);
+ assert(m != NULL);
data_store* ds = datamodel();
uint32_t pos = 0;
- ds->players.count = payload[pos++];
+ ds->players.count = m->payload[pos++];
// read usernames from buffer
for(int i=0; i<ds->players.count; i++)
{
uint8_t namelen;
- ds->players.players[i].player_id = payload[pos++];
- namelen = payload[pos++];
+ ds->players.players[i].player_id = m->payload[pos++];
+ namelen = m->payload[pos++];
assert(namelen <= MAX_PLAYER_NAME_LENGTH);
- strncpy(ds->players.players[i].player_name, (const char*) payload+pos, namelen);
+ strncpy(ds->players.players[i].player_name, (const char*) m->payload+pos, namelen);
ds->players.players[i].player_name[namelen] = '\0';
pos += namelen;
}
@@ -86,38 +86,40 @@ bool client_parse_player_list(const uint8_t* payload, const uint8_t data_len)
return true;
}
-bool client_parse_deal_hand(const uint8_t* payload, const uint8_t payload_len)
+bool client_parse_deal_hand(const msg_t *m)
{
- assert(payload != NULL);
- assert(payload_len == MAX_HAND_CARDS); // deal_cards packet have fixed size
+ assert(m != NULL);
+ assert(m->hdr.payload_length == MAX_HAND_CARDS); // deal_cards packet have fixed size
data_store* ds = datamodel();
for(int i=0; i<MAX_HAND_CARDS; i++)
- ds->hand.cards[i] = payload[i];
+ ds->hand.cards[i] = m->payload[i];
return true;
}
-bool client_parse_selected_stack(const uint8_t* payload, const uint8_t payload_len)
+bool client_parse_selected_stack(const msg_t *m)
{
- assert(payload != NULL && payload_len == 1);
+ assert(m != NULL);
+ assert(m->hdr.payload_length == 1);
data_store* ds = datamodel();
- ds->stack_index = payload[0];
+ ds->stack_index = m->payload[0];
assert(ds->stack_index <= NUM_TABLE_STACKS);
return true;
}
-bool client_parse_initial_stacks(const uint8_t* payload, const uint8_t payload_len)
+bool client_parse_initial_stacks(const msg_t *m)
{
- assert(payload != NULL && payload_len == NUM_TABLE_STACKS);
+ assert(m != NULL);
+ assert(m->hdr.payload_length == NUM_TABLE_STACKS);
data_store* ds = datamodel();
for(int i=0; i<NUM_TABLE_STACKS; i++)
- ds->table_stacks.stacks[i].cards[0] = payload[i];
+ ds->table_stacks.stacks[i].cards[0] = m->payload[i];
return true;
}
diff --git a/src/net/client.h b/src/net/client.h
index deda2c0..29f9720 100644
--- a/src/net/client.h
+++ b/src/net/client.h
@@ -6,11 +6,13 @@
#include "comm.h"
int client_connect_server(const char* host, const char* port);
+
void client_prep_hello(msg_t *m);
void client_prep_selected_card(msg_t *m);
void client_prep_selected_stack(msg_t *m);
-bool client_parse_player_list(const uint8_t* payload, const uint8_t data_len);
-bool client_parse_deal_hand(const uint8_t* payload, const uint8_t payload_len);
-bool client_parse_selected_stack(const uint8_t* payload, const uint8_t payload_len);
+
+bool client_parse_player_list(const msg_t *m);
+bool client_parse_deal_hand(const msg_t *m);
+bool client_parse_selected_stack(const msg_t *m);
#endif // OXEN_CLIENT_H
diff --git a/src/net/comm.c b/src/net/comm.c
index bd078da..0cb6233 100644
--- a/src/net/comm.c
+++ b/src/net/comm.c
@@ -30,26 +30,26 @@ bool net_recv(const int sock, const msg_type_t type)
switch(type)
{
case msg_type_hello:
- result = server_parse_hello(m.payload, m.hdr.payload_length);
+ result = server_parse_hello(&m);
break;
case msg_type_start_game:
- result = client_parse_player_list(m.payload, m.hdr.payload_length);
+ result = client_parse_player_list(&m);
break;
case msg_type_deal_hand:
- result = client_parse_deal_hand(m.payload, m.hdr.payload_length);
+ result = client_parse_deal_hand(&m);
break;
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_parse_selected_card(m.payload, m.hdr.payload_length);
+ result = server_parse_selected_card(&m);
break;
case msg_type_selected_stack_c:
- result = server_parse_selected_stack(m.payload, m.hdr.payload_length);
+ result = server_parse_selected_stack(&m);
break;
case msg_type_selected_stack_s:
- result = client_parse_selected_stack(m.payload, m.hdr.payload_length);
+ result = client_parse_selected_stack(&m);
break;
default:
printf("net_recv: Unknown message type %d received!\n", type);
diff --git a/src/net/server.c b/src/net/server.c
index 6154f98..1e35efd 100644
--- a/src/net/server.c
+++ b/src/net/server.c
@@ -107,9 +107,11 @@ void server_get_players(int serversock, socket_list_t* client_socks, const uint8
* @param[in] sock Socket to use
* @return Username of client
*/
-bool server_parse_hello(const uint8_t* payload, const uint8_t payload_len)
+bool server_parse_hello(const msg_t *m)
{
- assert(payload != NULL && payload_len < MAX_PLAYER_NAME_LENGTH && payload_len > 0);
+ assert(m != NULL);
+ assert(m->hdr.payload_length > 0);
+ assert(m->hdr.payload_length < MAX_PLAYER_NAME_LENGTH);
data_store* ds = datamodel();
@@ -117,31 +119,33 @@ bool server_parse_hello(const uint8_t* payload, const uint8_t payload_len)
{
if(strlen(ds->players.players[i].player_name) > 0) // search for first empty (not yet assigned) slot
continue;
- memcpy(ds->players.players[i].player_name, payload, payload_len);
- ds->players.players[i].player_name[payload_len] = '\0';
+ memcpy(ds->players.players[i].player_name, m->payload, m->hdr.payload_length);
+ ds->players.players[i].player_name[m->hdr.payload_length] = '\0';
}
return true;
}
-card* server_parse_selected_card(const uint8_t* payload, const uint8_t payload_len)
+card* server_parse_selected_card(const msg_t *m)
{
- assert(payload != NULL && payload_len == 1);
+ assert(m != NULL);
+ assert(m->hdr.payload_length == 1);
card* c = malloc(sizeof(card));
assert(c != NULL);
- *c = payload[0];
+ *c = m->payload[0];
return c;
}
-uint8_t* server_parse_selected_stack(const uint8_t* payload, const uint8_t payload_len)
+uint8_t* server_parse_selected_stack(const msg_t *m)
{
- assert(payload != NULL && payload_len == 1);
+ assert(m != NULL);
+ assert(m->hdr.payload_length == 1);
uint8_t* index = malloc(sizeof(uint8_t));
assert(index != NULL);
- *index = payload[0];
+ *index = m->payload[0];
return index;
}
diff --git a/src/net/server.h b/src/net/server.h
index 7856cee..9d7dcf5 100644
--- a/src/net/server.h
+++ b/src/net/server.h
@@ -17,13 +17,13 @@ typedef struct
int server_start(const char* port);
void server_get_players(int serversock, socket_list_t* client_socks, const uint8_t count);
-bool server_parse_hello(const uint8_t* payload, const uint8_t payload_len);
-card* server_parse_selected_card(const uint8_t* payload, const uint8_t payload_len);
-uint8_t* server_parse_selected_stack(const uint8_t* payload, const uint8_t payload_len);
-
void server_prep_start_game(msg_t *m);
void server_prep_deal_hand(msg_t *m, const hand_t *h);
void server_prep_selected_stack(msg_t *m);
void server_prep_initial_stacks(msg_t *m);
+bool server_parse_hello(const msg_t *m);
+card* server_parse_selected_card(const msg_t *m);
+uint8_t* server_parse_selected_stack(const msg_t *m);
+
#endif // OXEN_SERVER_H