diff options
Diffstat (limited to 'src/rps/gnunet-service-rps.c')
-rw-r--r-- | src/rps/gnunet-service-rps.c | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c index b9e472fda..cec0719fd 100644 --- a/src/rps/gnunet-service-rps.c +++ b/src/rps/gnunet-service-rps.c | |||
@@ -437,6 +437,43 @@ T_relative_avg (const struct GNUNET_TIME_Relative *rel_array, | |||
437 | 437 | ||
438 | 438 | ||
439 | /** | 439 | /** |
440 | * Insert PeerID in #view | ||
441 | * | ||
442 | * Called once we know a peer is live. | ||
443 | * Implements #PeerOp | ||
444 | * | ||
445 | * @return GNUNET_OK if peer was actually inserted | ||
446 | * GNUNET_NO if peer was not inserted | ||
447 | */ | ||
448 | static void | ||
449 | insert_in_view_op (void *cls, | ||
450 | const struct GNUNET_PeerIdentity *peer); | ||
451 | |||
452 | /** | ||
453 | * Insert PeerID in #view | ||
454 | * | ||
455 | * Called once we know a peer is live. | ||
456 | * | ||
457 | * @return GNUNET_OK if peer was actually inserted | ||
458 | * GNUNET_NO if peer was not inserted | ||
459 | */ | ||
460 | static int | ||
461 | insert_in_view (const struct GNUNET_PeerIdentity *peer) | ||
462 | { | ||
463 | int online; | ||
464 | |||
465 | online = Peers_check_peer_flag (peer, Peers_ONLINE); | ||
466 | if ( (GNUNET_NO == online) || | ||
467 | (GNUNET_SYSERR == online) ) /* peer is not even known */ | ||
468 | { | ||
469 | (void) Peers_check_peer_live (peer); | ||
470 | (void) Peers_schedule_operation (peer, insert_in_view_op); | ||
471 | return GNUNET_NO; | ||
472 | } | ||
473 | return View_put (peer); | ||
474 | } | ||
475 | |||
476 | /** | ||
440 | * Put random peer from sampler into the view as history update. | 477 | * Put random peer from sampler into the view as history update. |
441 | */ | 478 | */ |
442 | static void | 479 | static void |
@@ -448,7 +485,7 @@ hist_update (void *cls, | |||
448 | 485 | ||
449 | for (i = 0; i < num_peers; i++) | 486 | for (i = 0; i < num_peers; i++) |
450 | { | 487 | { |
451 | View_put (&ids[i]); | 488 | (void) insert_in_view (&ids[i]); |
452 | to_file (file_name_view_log, | 489 | to_file (file_name_view_log, |
453 | "+%s\t(hist)", | 490 | "+%s\t(hist)", |
454 | GNUNET_i2s_full (ids)); | 491 | GNUNET_i2s_full (ids)); |
@@ -642,11 +679,10 @@ insert_in_pull_map (void *cls, | |||
642 | * Implements #PeerOp | 679 | * Implements #PeerOp |
643 | */ | 680 | */ |
644 | static void | 681 | static void |
645 | insert_in_view (void *cls, | 682 | insert_in_view_op (void *cls, |
646 | const struct GNUNET_PeerIdentity *peer) | 683 | const struct GNUNET_PeerIdentity *peer) |
647 | { | 684 | { |
648 | GNUNET_assert (GNUNET_YES == Peers_check_peer_flag (peer, Peers_ONLINE)); | 685 | (void) insert_in_view (peer); |
649 | View_put (peer); | ||
650 | } | 686 | } |
651 | 687 | ||
652 | 688 | ||
@@ -687,7 +723,7 @@ got_peer (const struct GNUNET_PeerIdentity *peer) | |||
687 | if (GNUNET_YES == Peers_check_peer_live (peer)) | 723 | if (GNUNET_YES == Peers_check_peer_live (peer)) |
688 | { | 724 | { |
689 | Peers_schedule_operation (peer, insert_in_sampler); | 725 | Peers_schedule_operation (peer, insert_in_sampler); |
690 | Peers_schedule_operation (peer, insert_in_view); | 726 | Peers_schedule_operation (peer, insert_in_view_op); |
691 | } | 727 | } |
692 | } | 728 | } |
693 | 729 | ||
@@ -1883,7 +1919,8 @@ do_round (void *cls) | |||
1883 | CustomPeerMap_size (push_map)); | 1919 | CustomPeerMap_size (push_map)); |
1884 | for (i = 0; i < first_border; i++) | 1920 | for (i = 0; i < first_border; i++) |
1885 | { | 1921 | { |
1886 | View_put (CustomPeerMap_get_peer_by_index (push_map, permut[i])); | 1922 | (void) insert_in_view (CustomPeerMap_get_peer_by_index (push_map, |
1923 | permut[i])); | ||
1887 | to_file (file_name_view_log, | 1924 | to_file (file_name_view_log, |
1888 | "+%s\t(push list)", | 1925 | "+%s\t(push list)", |
1889 | GNUNET_i2s_full (&view_array[i])); | 1926 | GNUNET_i2s_full (&view_array[i])); |
@@ -1897,8 +1934,8 @@ do_round (void *cls) | |||
1897 | CustomPeerMap_size (pull_map)); | 1934 | CustomPeerMap_size (pull_map)); |
1898 | for (i = first_border; i < second_border; i++) | 1935 | for (i = first_border; i < second_border; i++) |
1899 | { | 1936 | { |
1900 | View_put (CustomPeerMap_get_peer_by_index (pull_map, | 1937 | (void) insert_in_view (CustomPeerMap_get_peer_by_index (pull_map, |
1901 | permut[i - first_border])); | 1938 | permut[i - first_border])); |
1902 | to_file (file_name_view_log, | 1939 | to_file (file_name_view_log, |
1903 | "+%s\t(pull list)", | 1940 | "+%s\t(pull list)", |
1904 | GNUNET_i2s_full (&view_array[i])); | 1941 | GNUNET_i2s_full (&view_array[i])); |