diff options
Diffstat (limited to 'src/dht/gnunet_dht_profiler.c')
-rw-r--r-- | src/dht/gnunet_dht_profiler.c | 99 |
1 files changed, 46 insertions, 53 deletions
diff --git a/src/dht/gnunet_dht_profiler.c b/src/dht/gnunet_dht_profiler.c index f0c4ec7be..03ea62152 100644 --- a/src/dht/gnunet_dht_profiler.c +++ b/src/dht/gnunet_dht_profiler.c | |||
@@ -461,9 +461,21 @@ do_shutdown (void *cls) | |||
461 | a_ctx = NULL; | 461 | a_ctx = NULL; |
462 | } | 462 | } |
463 | //FIXME: Should we collect stats only for put/get not for other messages. | 463 | //FIXME: Should we collect stats only for put/get not for other messages. |
464 | if(NULL != bandwidth_stats_op) | 464 | if (NULL != bandwidth_stats_op) |
465 | { | ||
465 | GNUNET_TESTBED_operation_done (bandwidth_stats_op); | 466 | GNUNET_TESTBED_operation_done (bandwidth_stats_op); |
466 | bandwidth_stats_op = NULL; | 467 | bandwidth_stats_op = NULL; |
468 | } | ||
469 | if (NULL != successor_stats_op) | ||
470 | { | ||
471 | GNUNET_TESTBED_operation_done (successor_stats_op); | ||
472 | successor_stats_op = NULL; | ||
473 | } | ||
474 | if (NULL != successor_stats_task) | ||
475 | { | ||
476 | GNUNET_SCHEDULER_cancel (successor_stats_task); | ||
477 | successor_stats_task = NULL; | ||
478 | } | ||
467 | GNUNET_free_non_null (a_ac); | 479 | GNUNET_free_non_null (a_ac); |
468 | } | 480 | } |
469 | 481 | ||
@@ -687,11 +699,7 @@ teardown_dht_connection (void *cls) | |||
687 | { | 699 | { |
688 | struct Context *ctx = cls; | 700 | struct Context *ctx = cls; |
689 | struct GNUNET_TESTBED_Operation *op; | 701 | struct GNUNET_TESTBED_Operation *op; |
690 | const struct GNUNET_SCHEDULER_TaskContext *tc; | ||
691 | 702 | ||
692 | tc = GNUNET_SCHEDULER_get_task_context (); | ||
693 | if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) | ||
694 | return; | ||
695 | GNUNET_assert (NULL != ctx); | 703 | GNUNET_assert (NULL != ctx); |
696 | GNUNET_assert (NULL != (op = ctx->op)); | 704 | GNUNET_assert (NULL != (op = ctx->op)); |
697 | ctx->op = NULL; | 705 | ctx->op = NULL; |
@@ -1070,7 +1078,7 @@ successor_stats_cont (void *cls, | |||
1070 | successor_stats_op = NULL; | 1078 | successor_stats_op = NULL; |
1071 | if (0 == max_searches) | 1079 | if (0 == max_searches) |
1072 | { | 1080 | { |
1073 | start_func(); | 1081 | start_func (); |
1074 | return; | 1082 | return; |
1075 | } | 1083 | } |
1076 | 1084 | ||
@@ -1108,39 +1116,27 @@ successor_stats_cont (void *cls, | |||
1108 | GNUNET_NO); | 1116 | GNUNET_NO); |
1109 | if ((start_val == val) && (count == num_peers)) | 1117 | if ((start_val == val) && (count == num_peers)) |
1110 | { | 1118 | { |
1111 | DEBUG("CIRCLE COMPLETED after %u tries", tries); | 1119 | DEBUG ("CIRCLE COMPLETED after %u tries", tries); |
1112 | if(NULL == successor_stats_task) | 1120 | if(NULL == successor_stats_task) |
1113 | { | 1121 | { |
1114 | start_func(); | 1122 | start_func(); |
1115 | } | 1123 | } |
1116 | return; | 1124 | return; |
1117 | } | 1125 | } |
1118 | else | 1126 | if (max_searches == ++tries) |
1119 | { | 1127 | { |
1120 | if (max_searches == ++tries) | 1128 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1121 | { | 1129 | "Maximum tries %u exceeded while checking successor TOTAL TRIES %u" |
1122 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1130 | " circle formation. Exiting\n", |
1123 | "Maximum tries %u exceeded while checking successor TOTAL TRIES %u" | 1131 | max_searches,tries); |
1124 | " circle formation. Exiting\n", | 1132 | start_func(); |
1125 | max_searches,tries); | 1133 | return; |
1126 | if (NULL != successor_stats_task) | ||
1127 | { | ||
1128 | successor_stats_task = NULL; | ||
1129 | } | ||
1130 | if(NULL == successor_stats_task) | ||
1131 | { | ||
1132 | start_func(); | ||
1133 | } | ||
1134 | |||
1135 | return; | ||
1136 | } | ||
1137 | else | ||
1138 | { | ||
1139 | flag = 0; | ||
1140 | successor_stats_task = GNUNET_SCHEDULER_add_delayed (delay_stats, | ||
1141 | &collect_stats, cls); | ||
1142 | } | ||
1143 | } | 1134 | } |
1135 | flag = 0; | ||
1136 | successor_stats_task | ||
1137 | = GNUNET_SCHEDULER_add_delayed (delay_stats, | ||
1138 | &collect_stats, | ||
1139 | cls); | ||
1144 | } | 1140 | } |
1145 | 1141 | ||
1146 | 1142 | ||
@@ -1214,26 +1210,21 @@ successor_stats_iterator (void *cls, | |||
1214 | static void | 1210 | static void |
1215 | collect_stats (void *cls) | 1211 | collect_stats (void *cls) |
1216 | { | 1212 | { |
1217 | const struct GNUNET_SCHEDULER_TaskContext *tc; | 1213 | successor_stats_task = NULL; |
1218 | |||
1219 | tc = GNUNET_SCHEDULER_get_task_context (); | ||
1220 | if ((GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) != 0) | ||
1221 | return; | ||
1222 | |||
1223 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1214 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
1224 | "Start collecting statistics...\n"); | 1215 | "Start collecting statistics...\n"); |
1225 | GNUNET_assert(NULL != testbed_handles); | 1216 | GNUNET_assert(NULL != testbed_handles); |
1226 | 1217 | ||
1227 | if (0 != max_searches) | 1218 | if (0 != max_searches) |
1228 | successor_peer_hashmap = GNUNET_CONTAINER_multihashmap_create (num_peers, | 1219 | successor_peer_hashmap |
1229 | GNUNET_NO); | 1220 | = GNUNET_CONTAINER_multihashmap_create (num_peers, |
1230 | successor_stats_op = | 1221 | GNUNET_NO); |
1231 | GNUNET_TESTBED_get_statistics (num_peers, testbed_handles, | 1222 | successor_stats_op |
1232 | "dht", NULL, | 1223 | = GNUNET_TESTBED_get_statistics (num_peers, testbed_handles, |
1233 | successor_stats_iterator, | 1224 | "dht", NULL, |
1234 | successor_stats_cont, cls); | 1225 | successor_stats_iterator, |
1235 | 1226 | successor_stats_cont, cls); | |
1236 | GNUNET_assert(NULL != successor_stats_op); | 1227 | GNUNET_assert (NULL != successor_stats_op); |
1237 | } | 1228 | } |
1238 | 1229 | ||
1239 | 1230 | ||
@@ -1265,9 +1256,10 @@ service_started (void *cls, | |||
1265 | collect_stat_cls->service_connect_ctx = cls; | 1256 | collect_stat_cls->service_connect_ctx = cls; |
1266 | collect_stat_cls->op = op; | 1257 | collect_stat_cls->op = op; |
1267 | 1258 | ||
1268 | successor_stats_task = GNUNET_SCHEDULER_add_delayed (delay_stats, | 1259 | successor_stats_task |
1269 | &collect_stats, | 1260 | = GNUNET_SCHEDULER_add_delayed (delay_stats, |
1270 | collect_stat_cls); | 1261 | &collect_stats, |
1262 | collect_stat_cls); | ||
1271 | } | 1263 | } |
1272 | } | 1264 | } |
1273 | 1265 | ||
@@ -1393,7 +1385,8 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
1393 | 1385 | ||
1394 | if (0 == num_peers) | 1386 | if (0 == num_peers) |
1395 | { | 1387 | { |
1396 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Exiting as the number of peers is %u\n"), | 1388 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
1389 | _("Exiting as the number of peers is %u\n"), | ||
1397 | num_peers); | 1390 | num_peers); |
1398 | return; | 1391 | return; |
1399 | } | 1392 | } |
@@ -1401,8 +1394,8 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
1401 | event_mask = 0; | 1394 | event_mask = 0; |
1402 | GNUNET_TESTBED_run (hosts_file, cfg, num_peers, event_mask, NULL, | 1395 | GNUNET_TESTBED_run (hosts_file, cfg, num_peers, event_mask, NULL, |
1403 | NULL, &test_run, NULL); | 1396 | NULL, &test_run, NULL); |
1404 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &do_shutdown, | 1397 | GNUNET_SCHEDULER_add_shutdown (&do_shutdown, |
1405 | NULL); | 1398 | NULL); |
1406 | } | 1399 | } |
1407 | 1400 | ||
1408 | 1401 | ||