-/* Copyright (c) 2012-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2012-2022. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
double deadline;
xbt_assert(argc == 3 || argc == 4, "Wrong number of arguments");
/* Node initialization */
- unsigned int id = strtoul(argv[1], NULL, 0);
+ unsigned int id = (unsigned int)strtoul(argv[1], NULL, 0);
node_t node = node_init(id);
if (argc == 4) {
XBT_INFO("Hi, I'm going to join the network with id %s", sg_mailbox_get_name(node->mailbox));
- unsigned int id_known = strtoul(argv[2], NULL, 0);
+ unsigned int id_known = (unsigned int)strtoul(argv[2], NULL, 0);
join_success = join(node, id_known);
deadline = strtod(argv[3], NULL);
} else {
sg_mailbox_t mailbox = get_node_mailbox(node->id);
while (simgrid_get_clock() < deadline) {
- if (node->receive_comm == NULL)
- node->receive_comm = sg_mailbox_get_async(mailbox, &node->received_msg);
-
- if (sg_comm_test(node->receive_comm)) {
+ const kademlia_message_t msg = receive(node, mailbox);
+ if (msg) {
// There has been a transfer, we need to handle it !
- const kademlia_message_t msg = (kademlia_message_t)(node->received_msg);
- if (msg) {
- handle_find_node(node, msg);
- answer_free(msg->answer);
- free(msg);
- node->receive_comm = NULL;
- } else {
- sg_actor_sleep_for(1);
- }
+ handle_find_node(node, msg);
+ answer_free(msg->answer);
+ free(msg);
} else {
/* We search for a pseudo random node */
if (simgrid_get_clock() >= next_lookup_time) {
simgrid_init(&argc, argv);
/* Check the arguments */
- xbt_assert(argc > 2, "Usage: %s platform_file deployment_file\n\tExample: %s msg_platform.xml msg_deployment.xml\n",
- argv[0], argv[0]);
+ xbt_assert(argc > 2, "Usage: %s platform_file deployment_file\n\tExample: %s platform.xml deployment.xml\n", argv[0],
+ argv[0]);
simgrid_load_platform(argv[1]);
simgrid_register_function("node", node);