Go to the source code of this file.
Data Structures | |
struct | GNUNET_MESSENGER_EpochMemberConfirmation |
struct | GNUNET_MESSENGER_EpochMemberIteration |
Functions | |
struct GNUNET_MESSENGER_EpochMembership * | create_epoch_membership (uint32_t size) |
Creates and allocates a new membership for subgroups of an epoch with specified size. More... | |
void | destroy_epoch_membership (struct GNUNET_MESSENGER_EpochMembership *membership) |
Destroys and frees resources of a given membership. More... | |
uint32_t | get_epoch_membership_size (const struct GNUNET_MESSENGER_EpochMembership *membership) |
Returns the size of a given epoch membership. More... | |
uint32_t | get_epoch_membership_count (const struct GNUNET_MESSENGER_EpochMembership *membership) |
Returns the current amount of individual members inside a given epoch membership. More... | |
enum GNUNET_GenericReturnValue | is_epoch_membership_completed (const struct GNUNET_MESSENGER_EpochMembership *membership) |
Returns whether a given epoch membership is complete, meaning that all of its intended members have provided an own announcement to it. More... | |
static enum GNUNET_GenericReturnValue | it_search_epoch_member (void *cls, const struct GNUNET_HashCode *hash, void *value) |
enum GNUNET_GenericReturnValue | is_epoch_membership_member (const struct GNUNET_MESSENGER_EpochMembership *membership, const struct GNUNET_MESSENGER_Contact *contact) |
Returns whether a specific contact is announced member of a given epoch membership. More... | |
enum GNUNET_GenericReturnValue | get_epoch_membership_member_hash (const struct GNUNET_MESSENGER_EpochMembership *membership, struct GNUNET_HashCode *hash, enum GNUNET_GenericReturnValue other) |
Provides an announcement hash of a member from a given epoch membership. More... | |
uint32_t | get_epoch_membership_member_position (const struct GNUNET_MESSENGER_EpochMembership *membership) |
Returns the index position of the client inside a given epoch in relation to its list of members. More... | |
static enum GNUNET_GenericReturnValue | it_update_epoch_member (void *cls, const struct GNUNET_HashCode *key, void *value) |
enum GNUNET_GenericReturnValue | confirm_epoch_membership_announcment (struct GNUNET_MESSENGER_EpochMembership *membership, const struct GNUNET_HashCode *hash, const struct GNUNET_MESSENGER_Message *message, struct GNUNET_MESSENGER_Contact *contact, enum GNUNET_GenericReturnValue sent) |
Adds an announcement message with its hash to a given epoch membership as confirmation for a specific contact. More... | |
enum GNUNET_GenericReturnValue | revoke_epoch_membership_announcement (struct GNUNET_MESSENGER_EpochMembership *membership, const struct GNUNET_HashCode *hash, struct GNUNET_MESSENGER_Contact *contact) |
Drops an announcement message with a provided hash from a given epoch membership to revoke the confirmed membership of a specific contact. More... | |
static enum GNUNET_GenericReturnValue | it_iterate_epoch_member (void *cls, const struct GNUNET_HashCode *key, void *value) |
int | iterate_epoch_membership_members (const struct GNUNET_MESSENGER_EpochMembership *membership, GNUNET_MESSENGER_MembershipCallback callback, void *cls) |
Iterate through all confirmed members of a given epoch membership and pass them through a provided callback with a custom closure. More... | |
struct GNUNET_MESSENGER_EpochMembership * create_epoch_membership | ( | uint32_t | size | ) |
Creates and allocates a new membership for subgroups of an epoch with specified size.
[in] | size | Maximum size or 0 |
Definition at line 31 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::announcement, GNUNET_MESSENGER_EpochMembership::count, GNUNET_CONTAINER_multihashmap_create(), GNUNET_new, GNUNET_NO, GNUNET_MESSENGER_EpochMembership::members, size, and GNUNET_MESSENGER_EpochMembership::size.
Referenced by create_epoch_announcement(), and create_epoch_group().
void destroy_epoch_membership | ( | struct GNUNET_MESSENGER_EpochMembership * | membership | ) |
Destroys and frees resources of a given membership.
[in,out] | membership | Membership |
Definition at line 52 of file messenger_api_epoch_membership.c.
References GNUNET_assert, GNUNET_CONTAINER_multihashmap_destroy(), GNUNET_free, and GNUNET_MESSENGER_EpochMembership::members.
Referenced by destroy_epoch_announcement(), and destroy_epoch_group().
uint32_t get_epoch_membership_size | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership | ) |
Returns the size of a given epoch membership.
[in] | membership | Membership |
Definition at line 63 of file messenger_api_epoch_membership.c.
References GNUNET_assert, and GNUNET_MESSENGER_EpochMembership::size.
Referenced by is_epoch_membership_completed().
uint32_t get_epoch_membership_count | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership | ) |
Returns the current amount of individual members inside a given epoch membership.
[in] | membership | Membership |
Definition at line 73 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::count, and GNUNET_assert.
Referenced by get_epoch_announcement_members_count(), get_epoch_group_members_count(), get_epoch_membership_member_position(), get_epoch_position_factor(), and is_epoch_membership_completed().
enum GNUNET_GenericReturnValue is_epoch_membership_completed | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership | ) |
Returns whether a given epoch membership is complete, meaning that all of its intended members have provided an own announcement to it.
[in] | membership | Membership |
Definition at line 83 of file messenger_api_epoch_membership.c.
References get_epoch_membership_count(), get_epoch_membership_size(), GNUNET_assert, GNUNET_NO, GNUNET_YES, and size.
Referenced by is_epoch_announcement_completed(), and is_epoch_group_completed().
|
static |
Definition at line 103 of file messenger_api_epoch_membership.c.
References GNUNET_assert, GNUNET_NO, GNUNET_YES, and value.
Referenced by is_epoch_membership_member().
enum GNUNET_GenericReturnValue is_epoch_membership_member | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership, |
const struct GNUNET_MESSENGER_Contact * | contact | ||
) |
Returns whether a specific contact is announced member of a given epoch membership.
[in] | membership | Membership |
[in] | contact | Contact |
Definition at line 124 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::announcement, GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_NO, GNUNET_YES, it_search_epoch_member(), and GNUNET_MESSENGER_EpochMembership::members.
Referenced by get_epoch_membership_member_hash(), get_epoch_membership_member_position(), is_epoch_announcement_announced(), is_epoch_announcement_member(), is_epoch_group_announced(), and is_epoch_group_member().
enum GNUNET_GenericReturnValue get_epoch_membership_member_hash | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership, |
struct GNUNET_HashCode * | hash, | ||
enum GNUNET_GenericReturnValue | other | ||
) |
Provides an announcement hash of a member from a given epoch membership.
Depending on a flag it provides some hash of another member or the clients own announcement.
[in] | membership | Membership |
[out] | hash | Hash of announcement |
[in] | other | Other flag |
Definition at line 147 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::announcement, GNUNET_assert, GNUNET_CONTAINER_multihashmap_iterator_create(), GNUNET_CONTAINER_multihashmap_iterator_destroy(), GNUNET_CONTAINER_multihashmap_iterator_next(), GNUNET_CRYPTO_hash_cmp(), GNUNET_memcpy, GNUNET_NO, GNUNET_OK, GNUNET_SYSERR, GNUNET_YES, is_epoch_membership_member(), GNUNET_MESSENGER_EpochMembership::members, and result.
Referenced by get_epoch_announcement_member_hash(), and get_epoch_group_member_hash().
uint32_t get_epoch_membership_member_position | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership | ) |
Returns the index position of the client inside a given epoch in relation to its list of members.
Every member of an epoch gets a unique position that depends on the hash of their announcement message.
[in] | membership | Membership |
Definition at line 190 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::announcement, get_epoch_membership_count(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_iterator_create(), GNUNET_CONTAINER_multihashmap_iterator_destroy(), GNUNET_CONTAINER_multihashmap_iterator_next(), GNUNET_CRYPTO_hash_cmp(), GNUNET_YES, is_epoch_membership_member(), and GNUNET_MESSENGER_EpochMembership::members.
Referenced by get_epoch_group_member_position().
|
static |
Definition at line 230 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMemberConfirmation::contact, GNUNET_assert, GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_CRYPTO_hash_cmp(), GNUNET_NO, GNUNET_OK, GNUNET_YES, GNUNET_MESSENGER_EpochMemberConfirmation::hash, key, GNUNET_MESSENGER_EpochMemberConfirmation::members, and value.
Referenced by confirm_epoch_membership_announcment().
enum GNUNET_GenericReturnValue confirm_epoch_membership_announcment | ( | struct GNUNET_MESSENGER_EpochMembership * | membership, |
const struct GNUNET_HashCode * | hash, | ||
const struct GNUNET_MESSENGER_Message * | message, | ||
struct GNUNET_MESSENGER_Contact * | contact, | ||
enum GNUNET_GenericReturnValue | sent | ||
) |
Adds an announcement message with its hash to a given epoch membership as confirmation for a specific contact.
An additional flag specifies whether the message has been sent by the client or not.
[in,out] | membership | Membership |
[in] | hash | Hash of message |
[in] | message | Message |
[in,out] | contact | Contact |
[in] | sent | Sent flag |
Definition at line 263 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::announcement, GNUNET_MESSENGER_EpochMemberConfirmation::contact, GNUNET_MESSENGER_EpochMembership::count, GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_memcpy, GNUNET_MESSENGER_KIND_ANNOUNCEMENT, GNUNET_NO, GNUNET_OK, GNUNET_SYSERR, GNUNET_YES, GNUNET_MESSENGER_EpochMemberConfirmation::hash, GNUNET_MESSENGER_Message::header, it_update_epoch_member(), GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_EpochMemberConfirmation::members, and GNUNET_MESSENGER_EpochMembership::members.
Referenced by confirm_epoch_announcement_member(), and confirm_epoch_group_member().
enum GNUNET_GenericReturnValue revoke_epoch_membership_announcement | ( | struct GNUNET_MESSENGER_EpochMembership * | membership, |
const struct GNUNET_HashCode * | hash, | ||
struct GNUNET_MESSENGER_Contact * | contact | ||
) |
Drops an announcement message with a provided hash from a given epoch membership to revoke the confirmed membership of a specific contact.
[in,out] | membership | Membership |
[in] | hash | Hash of message |
[in,out] | contact | Contact |
Definition at line 309 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMembership::announcement, GNUNET_MESSENGER_EpochMemberConfirmation::contact, GNUNET_MESSENGER_EpochMembership::count, GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_memcmp, GNUNET_NO, GNUNET_YES, GNUNET_MESSENGER_EpochMemberConfirmation::hash, and GNUNET_MESSENGER_EpochMembership::members.
Referenced by revoke_epoch_announcement_member().
|
static |
Definition at line 342 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMemberIteration::callback, GNUNET_MESSENGER_EpochMemberIteration::cls, GNUNET_assert, GNUNET_YES, and value.
Referenced by iterate_epoch_membership_members().
int iterate_epoch_membership_members | ( | const struct GNUNET_MESSENGER_EpochMembership * | membership, |
GNUNET_MESSENGER_MembershipCallback | callback, | ||
void * | cls | ||
) |
Iterate through all confirmed members of a given epoch membership and pass them through a provided callback with a custom closure.
[in] | membership | Membership |
[in] | callback | Iteration callback or NULL |
[in] | cls | Closure or NULL |
Definition at line 362 of file messenger_api_epoch_membership.c.
References GNUNET_MESSENGER_EpochMemberIteration::callback, GNUNET_MESSENGER_EpochMemberIteration::cls, GNUNET_assert, GNUNET_CONTAINER_multihashmap_iterate(), it_iterate_epoch_member(), and GNUNET_MESSENGER_EpochMembership::members.
Referenced by is_epoch_group_compatible(), is_epoch_group_missing_announcement(), and is_epoch_group_subgroup_of().