From 310ddf4e9d4bb462c960593ab6a5dfa9d679555a Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Tue, 6 Oct 2009 12:39:31 +0200 Subject: [PATCH] More work on the ADC client lib. --- src/tools/adcclient.c | 20 +++++++++++++++++++- src/tools/adcclient.h | 15 ++++++++++++--- src/tools/admin.c | 2 ++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/tools/adcclient.c b/src/tools/adcclient.c index 0c46065..7a64e14 100644 --- a/src/tools/adcclient.c +++ b/src/tools/adcclient.c @@ -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); + } } } diff --git a/src/tools/adcclient.h b/src/tools/adcclient.h index b9b21b0..fb92716 100644 --- a/src/tools/adcclient.h +++ b/src/tools/adcclient.h @@ -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; diff --git a/src/tools/admin.c b/src/tools/admin.c index 8362ccd..82ebe27 100644 --- a/src/tools/admin.c +++ b/src/tools/admin.c @@ -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: