More work on the ADC client lib.

This commit is contained in:
Jan Vidar Krey 2009-10-06 12:39:31 +02:00
parent 8592aa80d4
commit 310ddf4e9d
3 changed files with 33 additions and 4 deletions

View File

@ -230,7 +230,25 @@ static void ADC_client_on_recv_line(struct ADC_client* client, const char* line,
}
else
{
client->callback(client, ADC_CLIENT_USER_JOIN, 0);
if (adc_msg_has_named_argument(msg, "ID"))
{
struct ADC_user user;
EXTRACT_NAMED_ARG(msg, "NI", user.name);
EXTRACT_NAMED_ARG(msg, "DE", user.description);
EXTRACT_NAMED_ARG(msg, "VE", user.version);
EXTRACT_NAMED_ARG(msg, "ID", user.cid);
EXTRACT_NAMED_ARG(msg, "I4", user.address);
struct ADC_client_callback_data data;
data.user = &user;
client->callback(client, ADC_CLIENT_USER_JOIN, &data);
hub_free(user.name);
hub_free(user.description);
hub_free(user.version);
hub_free(user.cid);
hub_free(user.address);
}
}
}

View File

@ -76,16 +76,26 @@ struct ADC_chat_message
int flags;
};
struct ADC_user
{
sid_t sid;
char* cid;
char* name;
char* description;
char* address;
char* version;
};
struct ADC_client_callback_data
{
union {
struct ADC_hub_info* hubinfo;
struct ADC_chat_message* chat;
struct ADC_user* user;
};
};
typedef int (*adc_client_cb)(struct ADC_client*, enum ADC_client_callback_type, struct ADC_client_callback_data* data);
struct ADC_client
@ -101,7 +111,6 @@ struct ADC_client
size_t timeout;
struct net_connection* con;
struct net_timer* timer;
struct sockaddr_in addr;
char* hub_address;
char* nick;

View File

@ -40,9 +40,11 @@ static int handle(struct ADC_client* client, enum ADC_client_callback_type type,
break;
case ADC_CLIENT_USER_JOIN:
printf(" JOIN: %s\n", data->user->name);
break;
case ADC_CLIENT_USER_QUIT:
printf(" QUIT\n");
break;
case ADC_CLIENT_SEARCH_REQ: