GNUnet 0.21.0
peer.c File Reference

peer-ID table that assigns integer IDs to peer-IDs to save memory More...

#include "platform.h"
#include "gnunet_util_lib.h"
Include dependency graph for peer.c:

Go to the source code of this file.

Data Structures

struct  PeerEntry
 Per-peer information. More...
 

Macros

#define LOG(kind, ...)   GNUNET_log_from (kind, "util-peer", __VA_ARGS__)
 

Functions

GNUNET_PEER_Id GNUNET_PEER_search (const struct GNUNET_PeerIdentity *pid)
 Search for a peer identity. More...
 
GNUNET_PEER_Id GNUNET_PEER_intern (const struct GNUNET_PeerIdentity *pid)
 Intern an peer identity. More...
 
void GNUNET_PEER_decrement_rcs (const GNUNET_PEER_Id *ids, unsigned int count)
 Decrement multiple RCs of peer identities by one. More...
 
void GNUNET_PEER_change_rc (GNUNET_PEER_Id id, int delta)
 Change the reference counter of an interned PID. More...
 
void GNUNET_PEER_resolve (GNUNET_PEER_Id id, struct GNUNET_PeerIdentity *pid)
 Convert an interned PID to a normal peer identity. More...
 
const struct GNUNET_PeerIdentityGNUNET_PEER_resolve2 (GNUNET_PEER_Id id)
 Convert an interned PID to a normal peer identity. More...
 

Variables

static struct PeerEntry ** table
 Table with our interned peer IDs. More...
 
static struct GNUNET_CONTAINER_MultiPeerMapmap
 Peermap of PeerIdentities to "struct PeerEntry" (for fast lookup). More...
 
static unsigned int size
 Size of the "table". More...
 
static unsigned int free_list_start
 Index of the beginning of the free list in the table; set to "size" if no slots are free in the table. More...
 

Detailed Description

peer-ID table that assigns integer IDs to peer-IDs to save memory

Author
Christian Grothoff

Definition in file peer.c.

Macro Definition Documentation

◆ LOG

#define LOG (   kind,
  ... 
)    GNUNET_log_from (kind, "util-peer", __VA_ARGS__)

Definition at line 30 of file peer.c.

Variable Documentation

◆ table

◆ map

struct GNUNET_CONTAINER_MultiPeerMap* map
static

Peermap of PeerIdentities to "struct PeerEntry" (for fast lookup).

NULL until the library is actually being used.

Definition at line 63 of file peer.c.

Referenced by add_to_meta_counter(), check_unique(), forward_about_members(), get_store_contact(), get_store_contact_raw(), GNUNET_CONTAINER_multihashmap32_contains(), GNUNET_CONTAINER_multihashmap32_contains_value(), GNUNET_CONTAINER_multihashmap32_destroy(), GNUNET_CONTAINER_multihashmap32_get(), GNUNET_CONTAINER_multihashmap32_get_multiple(), GNUNET_CONTAINER_multihashmap32_iterate(), GNUNET_CONTAINER_multihashmap32_iterator_create(), GNUNET_CONTAINER_multihashmap32_put(), GNUNET_CONTAINER_multihashmap32_remove(), GNUNET_CONTAINER_multihashmap32_remove_all(), GNUNET_CONTAINER_multihashmap32_size(), GNUNET_CONTAINER_multihashmap_clear(), GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_contains_value(), GNUNET_CONTAINER_multihashmap_destroy(), GNUNET_CONTAINER_multihashmap_get(), GNUNET_CONTAINER_multihashmap_get_multiple(), GNUNET_CONTAINER_multihashmap_get_random(), GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_CONTAINER_multihashmap_iterator_create(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_CONTAINER_multihashmap_remove_all(), GNUNET_CONTAINER_multihashmap_size(), GNUNET_CONTAINER_multipeermap_contains(), GNUNET_CONTAINER_multipeermap_contains_value(), GNUNET_CONTAINER_multipeermap_create(), GNUNET_CONTAINER_multipeermap_destroy(), GNUNET_CONTAINER_multipeermap_get(), GNUNET_CONTAINER_multipeermap_get_multiple(), GNUNET_CONTAINER_multipeermap_get_random(), GNUNET_CONTAINER_multipeermap_iterate(), GNUNET_CONTAINER_multipeermap_iterator_create(), GNUNET_CONTAINER_multipeermap_put(), GNUNET_CONTAINER_multipeermap_remove(), GNUNET_CONTAINER_multipeermap_remove_all(), GNUNET_CONTAINER_multipeermap_size(), GNUNET_CONTAINER_multishortmap_contains(), GNUNET_CONTAINER_multishortmap_contains_value(), GNUNET_CONTAINER_multishortmap_create(), GNUNET_CONTAINER_multishortmap_destroy(), GNUNET_CONTAINER_multishortmap_get(), GNUNET_CONTAINER_multishortmap_get_multiple(), GNUNET_CONTAINER_multishortmap_get_random(), GNUNET_CONTAINER_multishortmap_iterate(), GNUNET_CONTAINER_multishortmap_iterator_create(), GNUNET_CONTAINER_multishortmap_put(), GNUNET_CONTAINER_multishortmap_remove(), GNUNET_CONTAINER_multishortmap_remove_all(), GNUNET_CONTAINER_multishortmap_size(), GNUNET_CONTAINER_multiuuidmap_contains(), GNUNET_CONTAINER_multiuuidmap_contains_value(), GNUNET_CONTAINER_multiuuidmap_create(), GNUNET_CONTAINER_multiuuidmap_destroy(), GNUNET_CONTAINER_multiuuidmap_get(), GNUNET_CONTAINER_multiuuidmap_get_multiple(), GNUNET_CONTAINER_multiuuidmap_get_random(), GNUNET_CONTAINER_multiuuidmap_iterate(), GNUNET_CONTAINER_multiuuidmap_iterator_create(), GNUNET_CONTAINER_multiuuidmap_put(), GNUNET_CONTAINER_multiuuidmap_remove(), GNUNET_CONTAINER_multiuuidmap_remove_all(), GNUNET_CONTAINER_multiuuidmap_size(), GNUNET_PEER_change_rc(), GNUNET_PEER_decrement_rcs(), GNUNET_PEER_intern(), GNUNET_PEER_search(), GNUNET_TIME_absolute_get_monotonic(), grow(), handle_connection_create(), idx_of(), iterate_forward_members(), iterate_notify_about_members(), notify_about_members(), on_appsink_new_sample(), remove_all(), remove_store_contact(), httpdomain.httpdomain.HTTPXRefHeaderRole::result_nodes(), run(), update_next_cache(), update_next_cache_bme(), update_next_cache_sme(), and update_store_contact().

◆ size

unsigned int size
static

Size of the "table".

Definition at line 68 of file peer.c.

Referenced by adjust(), announce_id(), auth_key_to_string(), block_plugin_fs_create_group(), block_sign_ecdsa(), block_sign_eddsa(), c2i(), callback_download(), check_advertisement(), check_attribute_delete_message(), check_attribute_store_message(), check_backchannel_encapsulation(), check_client_send(), check_communicator_available(), check_connection_create(), check_consume_ticket_message(), check_create_message(), check_credential_delete_message(), check_credential_iteration_start(), check_credential_store_message(), check_data(), check_delete_message(), check_dht_local_get_result_seen(), check_dv_box(), check_dv_learn(), check_encrypted(), check_fragment_box(), check_get(), check_identity_update(), check_issue_ticket_message(), check_iterate_start(), check_iteration_start(), check_local_data(), check_monitor_start(), check_p2p_revoke(), check_query_message(), check_recv(), check_rename_message(), check_revoke_message(), check_revoke_ticket_message(), check_search(), check_search_response(), check_ssl_certificate(), check_statistics_value(), check_ticket_iteration_start(), check_watch(), connect_handler(), consider_for_advertising(), curl_check_hdr(), curl_download_cb(), curl_upload_cb(), d2j(), database_setup(), decode_and_send(), dht_get_string_accept_handler(), dht_get_string_handler(), do_decrypt(), do_encrypt(), do_restart_typemap_message(), do_send(), do_shutdown(), download_cb(), ecdsa_symmetric_decrypt(), ecdsa_symmetric_encrypt(), eddsa_symmetric_decrypt(), eddsa_symmetric_encrypt(), env_delete_notify(), expired_processor(), extract_files(), finish_handling_raw_message(), full_recursive_download(), GCP_set_hello(), GCT_handle_encrypted(), get_cb(), get_resp_callback(), get_result_iterator(), GNUNET_ABD_delegate_issue(), GNUNET_ABD_delegate_serialize(), GNUNET_BANDWIDTH_tracker_consume(), GNUNET_BANDWIDTH_tracker_get_delay(), GNUNET_BANDWIDTH_value_get_delay_for(), GNUNET_BIO_get_buffer_contents(), GNUNET_BIO_read_open_buffer(), GNUNET_BIO_read_spec_commit(), GNUNET_BIO_read_spec_double(), GNUNET_BIO_read_spec_float(), GNUNET_BIO_write_spec_object(), GNUNET_BLOCK_GROUP_compute_bloomfilter_size(), GNUNET_BLOCK_is_accepting(), GNUNET_buffer_reap(), GNUNET_CONFIGURATION_deserialize(), GNUNET_CONFIGURATION_get_value_size(), GNUNET_CONFIGURATION_serialize(), GNUNET_CONFIGURATION_write(), GNUNET_CONTAINER_bloomfilter_get_raw_data(), GNUNET_CONTAINER_bloomfilter_init(), GNUNET_CONTAINER_bloomfilter_load(), GNUNET_CONTAINER_bloomfilter_or(), GNUNET_CONTAINER_bloomfilter_or2(), GNUNET_CONTAINER_bloomfilter_resize(), GNUNET_CRYPTO_decrypt_old(), GNUNET_CRYPTO_eddsa_sign_raw(), GNUNET_CRYPTO_encrypt_old(), GNUNET_CRYPTO_hash(), GNUNET_CRYPTO_hash_context_read(), GNUNET_CRYPTO_mpi_print_unsigned(), GNUNET_CRYPTO_mpi_scan_unsigned(), GNUNET_CRYPTO_mpi_scan_unsigned_le(), GNUNET_CRYPTO_private_key_to_string(), GNUNET_CRYPTO_public_key_to_string(), GNUNET_CRYPTO_symmetric_decrypt(), GNUNET_CRYPTO_symmetric_encrypt(), GNUNET_DATASTORE_put(), GNUNET_DATASTORE_remove(), GNUNET_DHT_put(), GNUNET_DISK_file_copy(), GNUNET_DISK_file_handle_size(), GNUNET_DISK_file_size(), GNUNET_FS_directory_builder_finish(), GNUNET_FS_directory_list_contents(), GNUNET_FS_handle_on_demand_block(), GNUNET_FS_meta_data_deserialize(), GNUNET_FS_meta_data_serialize(), GNUNET_FS_publish_ublock_(), GNUNET_FS_read_meta_data(), GNUNET_FS_tree_encoder_create(), GNUNET_FS_unindex_start(), GNUNET_FS_write_meta_data(), GNUNET_GNSRECORD_proof_get_size(), GNUNET_HELLO_builder_from_msg(), GNUNET_HOSTLIST_server_start(), GNUNET_JSON_from_data(), GNUNET_JSON_from_data64(), GNUNET_JSON_spec_fixed(), GNUNET_JSON_spec_fixed64(), GNUNET_JSON_spec_varsize(), GNUNET_MESSENGER_create_topo(), GNUNET_MQ_msg_(), GNUNET_MQ_msg_copy(), GNUNET_MQ_msg_nested_mh_(), GNUNET_MST_from_buffer(), GNUNET_NAT_AUTO_autoconfig_start(), GNUNET_PEER_change_rc(), GNUNET_PEER_decrement_rcs(), GNUNET_PEER_intern(), GNUNET_PEER_resolve(), GNUNET_PEER_resolve2(), GNUNET_PEERSTORE_store(), GNUNET_PQ_result_spec_array_fixed_size(), GNUNET_RECLAIM_ticket_serialize_get_size(), GNUNET_SCALARPRODUCT_accept_computation(), GNUNET_SCALARPRODUCT_start_computation(), GNUNET_snprintf(), GNUNET_SQ_bind(), GNUNET_STRINGS_buffer_fill(), GNUNET_STRINGS_buffer_tokenize(), GNUNET_STRINGS_byte_size_fancy(), GNUNET_STRINGS_data_to_string(), GNUNET_STRINGS_data_to_string_alloc(), GNUNET_STRINGS_fancy_size_to_bytes(), GNUNET_STRINGS_string_to_data_alloc(), GNUNET_TIME_absolute_get_monotonic(), GNUNET_TRANSPORT_cmd_send_simple_performance(), GNUNET_xgrow_(), GNUNET_xmalloc_(), GNUNET_xmalloc_unchecked_(), GNUNET_xmemdup_(), GSC_CLIENTS_deliver_message(), GSC_TYPEMAP_get_from_message(), handle_add_address(), handle_client_audio_message(), handle_communicator_available(), handle_connection_create(), handle_datastore_reply(), handle_dht_local_get(), handle_dht_local_get_result_seen(), handle_dht_local_put(), handle_dht_reply(), handle_dht_response(), handle_dht_result(), handle_dv_box(), handle_encrypted(), handle_get(), handle_icmp_back(), handle_intermediate(), handle_lookup_block_response(), handle_put(), handle_raw_message(), handle_response(), handle_search_result(), handle_set(), handle_statistics_value(), handle_tcp_back(), handle_udp_back(), handle_watch(), heap_plugin_put(), heap_plugin_remove_key(), ibf_create(), ibf_read_slice(), ibf_write_slice(), load_file(), main(), message_token(), mylog(), open_static_resource(), parse_rsa_signature(), parse_variable_data(), peerstore_sqlite_store_record(), post_data_iter(), postgres_plugin_del(), postgres_plugin_put(), postgres_plugin_remove_key(), prepare_ibf(), print_hex(), process_dht_put_content(), process_kblock(), process_kblock_for_unindex(), process_local_reply(), process_migration_content(), process_result(), process_result_with_request(), process_sblock(), publish_content(), put_callback(), put_cb(), put_continuation(), quota_processor(), read_dns4(), read_dns6(), REGEX_BLOCK_check(), REGEX_BLOCK_iterate(), regex_found_handler(), REGEX_INTERNAL_get_first_key(), REGEX_INTERNAL_search(), regex_iterator(), regex_next_edge(), REGEX_TEST_read_from_file(), reliability_box_message(), remove_continuation(), repl_proc(), rfn_create(), run(), save(), select_write_cb(), send_intermediate_response(), send_lookup_response(), send_response(), sqlite_plugin_put(), sqlite_plugin_remove_key(), stats_iterator(), store_peer_presistently_iterator(), stun_read_task(), t_ax_decrypt(), t_ax_decrypt_and_validate(), t_ax_encrypt(), t_hmac(), template_plugin_put(), template_plugin_remove_key(), transmit(), transmit_item(), transmit_ready(), try_handle_plaintext(), try_old_ax_keys(), unindex_process(), and write_all().

◆ free_list_start

unsigned int free_list_start
static

Index of the beginning of the free list in the table; set to "size" if no slots are free in the table.

Definition at line 74 of file peer.c.

Referenced by GNUNET_PEER_change_rc(), GNUNET_PEER_decrement_rcs(), and GNUNET_PEER_intern().