From 1a1448580d55a5cdac5363ef0e293d25303286b0 Mon Sep 17 00:00:00 2001 From: Dany LE Date: Sun, 28 Nov 2021 18:04:37 +0100 Subject: [PATCH] allow group query --- broadcast/broadcast | Bin 78496 -> 81872 bytes broadcast/broadcast.c | 72 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/broadcast/broadcast b/broadcast/broadcast index f8f214aa268a40118332de0772ec4801c278873f..4462e2aec5bd46b9722ba1717b1852fce862ee99 100755 GIT binary patch literal 81872 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 aS2+2#UjO&)FMvcy{_q-yYG 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 + { + free(node->data); + node->data = NULL; + } +} + +static void bc_free_groupname(void* data) +{ + if(data) + { + free(data); + } } static void unsubscribe(bst_node_t *node, void **args, int argc) { @@ -137,7 +152,28 @@ static void unsubscribe(bst_node_t *node, void **args, int argc) M_ERROR(MODULE_NAME, "Unable to request unsubscribe to client %d", node->key); } } -static void bc_send_query(bst_node_t *node, void **argv, int argc) +static void bc_send_query_group(bst_node_t *node, void **argv, int argc) +{ + (void)argc; + int *fd = (int *)argv[0]; + tunnel_msg_t *msg = (tunnel_msg_t *)argv[1]; + char *gname = NULL; + if (!node->data) + { + return; + } + int net32 = htonl(node->key); + (void)memcpy(&msg->data[1], &net32, sizeof(net32)); + gname = (char*)node->data; + (void)memcpy(&msg->data[sizeof(net32) + 1u], gname, strlen(gname)); + msg->header.size = sizeof(net32) + 1u + strlen(gname); + M_DEBUG(MODULE_NAME, "Sent group query to client %d: group %s (%d)", msg->header.client_id, gname, node->key); + if (msg_write(*fd, msg) == -1) + { + M_ERROR(MODULE_NAME, "Unable to write query message to client %d", node->key); + } +} +static void bc_send_query_user(bst_node_t *node, void **argv, int argc) { (void)argc; int *fd = (int *)argv[0]; @@ -156,9 +192,10 @@ static void bc_send_query(bst_node_t *node, void **argv, int argc) } (void)memcpy(&msg->data[len], bc_client->name, strlen(bc_client->name)); msg->header.size = len + strlen(bc_client->name); + M_DEBUG(MODULE_NAME, "Sent user query to client %d: User %s is in group %d", msg->header.client_id, bc_client->name, *group); if (msg_write(*fd, msg) == -1) { - M_ERROR(MODULE_NAME, "Unable to write notify message to client %d", node->key); + M_ERROR(MODULE_NAME, "Unable to write query message to client %d", node->key); } } static void bc_notify(bst_node_t *node, void **argv, int argc) @@ -339,8 +376,15 @@ int main(int argc, char **argv) memcpy(name, &request.data[1], request.header.size - 1u); name[request.header.size - 1u] = '\0'; hash = simple_hash(name); - bc_client->groups = (void *)bst_insert(bc_client->groups, hash, NULL); - M_LOG(MODULE_NAME, "Client %d subscription to broadcast group: %s (%d)", request.header.client_id, name, hash); + if(bst_find(bc_client->groups, hash) == NULL) + { + bc_client->groups = (void *)bst_insert(bc_client->groups, hash, strdup(name)); + M_LOG(MODULE_NAME, "Client %d subscription to broadcast group: %s (%d)", request.header.client_id, name, hash); + } + else + { + M_LOG(MODULE_NAME, "Client %d is already subscribed to the group %s", request.header.client_id, name); + } } else { @@ -366,13 +410,14 @@ int main(int argc, char **argv) } break; - case BC_QUERY_GROUP: + case BC_QUERY_USER: (void)memcpy(&hash, &request.data[1], sizeof(hash)); hash = ntohl(hash); net32 = htonl(hash); (void)memcpy(&response.data[1], &net32, sizeof(net32)); len = len = sizeof(net32) + 1u; fargv[3] = &len; + response.header.client_id = request.header.client_id; if (bst_find(bc_client->groups, hash) == NULL) { BC_ERROR(response, fd, request.header.client_id, "Client %d query a group that it does not belong to", request.header.client_id); @@ -380,8 +425,17 @@ int main(int argc, char **argv) else { // data format [type][4bytes group][user] - M_LOG(MODULE_NAME, "Client %d query group: %s (%d)", request.header.client_id, name, hash); - bst_for_each(clients, bc_send_query, fargv, 4); + M_LOG(MODULE_NAME, "Client %d query user from group %d", request.header.client_id, hash); + bst_for_each(clients, bc_send_query_user, fargv, 4); + } + break; + case BC_QUERY_GROUP: + if(bc_client->groups) + { + /** send back group to client one by one inform of [type][gid 4][group name]*/ + response.header.client_id = request.header.client_id; + M_LOG(MODULE_NAME, "Client %d query all user subscribed group", request.header.client_id); + bst_for_each(bc_client->groups, bc_send_query_group, fargv, 2); } break; default: