GNUnet  0.11.x
Data Fields
Operation Struct Reference

Operation context used to execute a set operation. More...

#include </home/buildbot/bb-worker/worker/gnunet/build/src/set/gnunet-service-set.h>

Collaboration diagram for Operation:
[legend]

Data Fields

struct Operationnext
 Kept in a DLL of the listener, if listener is non-NULL. More...
 
struct Operationprev
 Kept in a DLL of the listener, if listener is non-NULL. More...
 
struct GNUNET_CADET_Channelchannel
 Channel to the peer. More...
 
struct Listenerlistener
 Port this operation runs on. More...
 
struct GNUNET_MQ_Handlemq
 Message queue for the channel. More...
 
struct GNUNET_MessageHeadercontext_msg
 Context message, may be NULL. More...
 
struct Setset
 Set associated with the operation, NULL until the spec has been associated with a set. More...
 
struct OperationStatestate
 Operation-specific operation state. More...
 
struct GNUNET_PeerIdentity peer
 The identity of the requesting peer. More...
 
struct GNUNET_SCHEDULER_Tasktimeout_task
 Timeout task, if the incoming peer has not been accepted after the timeout, it will be disconnected. More...
 
uint32_t salt
 Salt to use for the operation. More...
 
uint32_t remote_element_count
 Remote peers element count. More...
 
uint32_t client_request_id
 ID used to identify an operation between service and client. More...
 
enum GNUNET_SET_ResultMode result_mode
 When are elements sent to the client, and which elements are sent? More...
 
int force_delta
 Always use delta operation instead of sending full sets, even it it's less efficient. More...
 
int force_full
 Always send full sets, even if delta operations would be more efficient. More...
 
int byzantine
 GNUNET_YES to fail operations where Byzantine faults are suspected More...
 
int byzantine_lower_bound
 Lower bound for the set size, used only when byzantine mode is enabled. More...
 
uint32_t suggest_id
 Unique request id for the request from a remote peer, sent to the client, which will accept or reject the request. More...
 
unsigned int generation_created
 Generation in which the operation handle was created. More...
 
struct GNUNET_HashCode my_xor
 XOR of the keys of all of the elements (remaining) in my set. More...
 
struct GNUNET_HashCode other_xor
 XOR of the keys of all of the elements (remaining) in the other peer's set. More...
 
struct GNUNET_CONTAINER_BloomFilterremote_bf
 The bf we currently receive. More...
 
struct GNUNET_CONTAINER_BloomFilterlocal_bf
 BF of the set's element. More...
 
struct GNUNET_CONTAINER_MultiHashMapmy_elements
 Remaining elements in the intersection operation. More...
 
struct GNUNET_CONTAINER_MultiHashMapIteratorfull_result_iter
 Iterator for sending the final set of my_elements to the client. More...
 
char * bf_data
 For multipart BF transmissions, we have to store the bloomfilter-data until we fully received it. More...
 
uint32_t bf_data_offset
 How many bytes of bf_data are valid? More...
 
uint32_t my_element_count
 Current element count contained within my_elements. More...
 
uint32_t bf_data_size
 size of the bloomfilter in bf_data. More...
 
uint32_t bf_bits_per_element
 size of the bloomfilter More...
 
enum IntersectionOperationPhase phase
 Current state of the operation. More...
 
int client_done_sent
 Did we send the client that we are done? More...
 
int channel_death_expected
 Set whenever we reach the state where the death of the channel is perfectly find and should NOT result in the operation being cancelled. More...
 
int return_intersection
 When are elements sent to the client, and which elements are sent? More...
 
uint64_t initial_size
 Initial size of our set, just before the operation started. More...
 
struct StrataEstimatorse
 Copy of the set's strata estimator at the time of creation of this operation. More...
 
struct InvertibleBloomFilterremote_ibf
 The IBF we currently receive. More...
 
struct InvertibleBloomFilterlocal_ibf
 The IBF with the local set's element. More...
 
struct GNUNET_CONTAINER_MultiHashMap32key_to_element
 Maps unsalted IBF-Keys to elements. More...
 
struct GNUNET_CONTAINER_MultiHashMapdemanded_hashes
 Hashes for elements that we have demanded from the other peer. More...
 
enum UnionOperationPhase phase
 Current state of the operation. More...
 
unsigned int ibf_buckets_received
 Number of ibf buckets already received into the remote_ibf. More...
 
uint32_t salt_send
 Salt that we're using for sending IBFs. More...
 
uint32_t salt_receive
 Salt for the IBF we've received and that we're currently decoding. More...
 
uint32_t received_fresh
 Number of elements we received from the other peer that were not in the local set yet. More...
 
uint32_t received_total
 Total number of elements received from the other peer. More...
 
int symmetric
 GNUNET_YES to also send back set elements we are sending to the remote peer. More...
 
double rtt_bandwidth_tradeoff
 User defined Bandwidth Round Trips Tradeoff. More...
 
unsigned int ibf_number_buckets_per_element
 Number of Element per bucket in IBF. More...
 
unsigned ibf_bucket_number
 Number of buckets in IBF. More...
 

Detailed Description

Operation context used to execute a set operation.

Definition at line 313 of file gnunet-service-set.h.

Field Documentation

◆ next

struct Operation * Operation::next

Kept in a DLL of the listener, if listener is non-NULL.

Definition at line 318 of file gnunet-service-set.h.

Referenced by get_incoming(), and handle_client_cancel().

◆ prev

struct Operation * Operation::prev

Kept in a DLL of the listener, if listener is non-NULL.

Definition at line 323 of file gnunet-service-set.h.

◆ channel

struct GNUNET_CADET_Channel * Operation::channel

◆ listener

struct Listener * Operation::listener

◆ mq

struct GNUNET_MQ_Handle * Operation::mq

◆ context_msg

struct GNUNET_MessageHeader * Operation::context_msg

Context message, may be NULL.

Definition at line 343 of file gnunet-service-set.h.

Referenced by _GSS_operation_destroy(), and handle_incoming_msg().

◆ set

struct Set * Operation::set

◆ state

struct OperationState* Operation::state

◆ peer

struct GNUNET_PeerIdentity Operation::peer

The identity of the requesting peer.

Needs to be stored here as the op spec might not have been created yet.

Definition at line 362 of file gnunet-service-set.h.

Referenced by channel_new_cb(), client_disconnect_cb(), handle_client_evaluate(), and handle_incoming_msg().

◆ timeout_task

struct GNUNET_SCHEDULER_Task * Operation::timeout_task

Timeout task, if the incoming peer has not been accepted after the timeout, it will be disconnected.

Definition at line 368 of file gnunet-service-set.h.

Referenced by channel_new_cb(), handle_incoming_msg(), incoming_destroy(), and incoming_timeout_cb().

◆ salt

uint32_t Operation::salt

Salt to use for the operation.

Salt currently used for BF construction (by us or the other peer, depending on where we are in the code).

Definition at line 373 of file gnunet-service-set.h.

Referenced by channel_new_cb(), filtered_map_initialization(), handle_client_evaluate(), handle_intersection_p2p_bf(), iterator_bf_create(), iterator_bf_reduce(), and send_bloomfilter().

◆ remote_element_count

uint32_t Operation::remote_element_count

◆ client_request_id

uint32_t Operation::client_request_id

◆ result_mode

enum GNUNET_SET_ResultMode Operation::result_mode

◆ force_delta

int Operation::force_delta

Always use delta operation instead of sending full sets, even it it's less efficient.

Definition at line 394 of file gnunet-service-set.h.

Referenced by handle_client_accept(), and handle_client_evaluate().

◆ force_full

int Operation::force_full

Always send full sets, even if delta operations would be more efficient.

Definition at line 400 of file gnunet-service-set.h.

Referenced by handle_client_accept(), handle_client_evaluate(), and handle_union_p2p_strata_estimator().

◆ byzantine

int Operation::byzantine

GNUNET_YES to fail operations where Byzantine faults are suspected

Definition at line 406 of file gnunet-service-set.h.

Referenced by handle_client_accept(), handle_client_evaluate(), handle_union_p2p_full_element(), and handle_union_p2p_strata_estimator().

◆ byzantine_lower_bound

int Operation::byzantine_lower_bound

Lower bound for the set size, used only when byzantine mode is enabled.

Definition at line 412 of file gnunet-service-set.h.

Referenced by handle_client_accept(), and handle_client_evaluate().

◆ suggest_id

uint32_t Operation::suggest_id

Unique request id for the request from a remote peer, sent to the client, which will accept or reject the request.

Set to '0' iff the request has not been suggested yet.

Definition at line 419 of file gnunet-service-set.h.

Referenced by check_incoming_msg(), get_incoming(), and handle_incoming_msg().

◆ generation_created

unsigned int Operation::generation_created

Generation in which the operation handle was created.

Definition at line 425 of file gnunet-service-set.h.

Referenced by _GSS_is_element_of_operation(), handle_client_accept(), and handle_client_evaluate().

◆ my_xor

struct GNUNET_HashCode Operation::my_xor

XOR of the keys of all of the elements (remaining) in my set.

Always updated when elements are added or removed to my_elements.

Definition at line 185 of file gnunet-service-seti.c.

Referenced by filter_all(), filtered_map_initialization(), handle_intersection_p2p_done(), initialize_map_unfiltered(), iterator_bf_reduce(), process_bf(), send_bloomfilter(), and send_p2p_done().

◆ other_xor

struct GNUNET_HashCode Operation::other_xor

XOR of the keys of all of the elements (remaining) in the other peer's set.

Updated when we receive the other peer's Bloom filter.

Definition at line 192 of file gnunet-service-seti.c.

Referenced by handle_intersection_p2p_bf(), and process_bf().

◆ remote_bf

struct GNUNET_CONTAINER_BloomFilter* Operation::remote_bf

◆ local_bf

struct GNUNET_CONTAINER_BloomFilter* Operation::local_bf

BF of the set's element.

Definition at line 238 of file gnunet-service-seti.c.

Referenced by _GSS_operation_destroy(), iterator_bf_create(), process_bf(), and send_bloomfilter().

◆ my_elements

struct GNUNET_CONTAINER_MultiHashMap* Operation::my_elements

◆ full_result_iter

struct GNUNET_CONTAINER_MultiHashMapIterator* Operation::full_result_iter

Iterator for sending the final set of my_elements to the client.

Definition at line 249 of file gnunet-service-seti.c.

Referenced by _GSS_operation_destroy(), handle_intersection_p2p_done(), process_bf(), and send_remaining_elements().

◆ bf_data

char* Operation::bf_data

For multipart BF transmissions, we have to store the bloomfilter-data until we fully received it.

Definition at line 255 of file gnunet-service-seti.c.

Referenced by handle_intersection_p2p_bf().

◆ bf_data_offset

uint32_t Operation::bf_data_offset

How many bytes of bf_data are valid?

Definition at line 266 of file gnunet-service-seti.c.

Referenced by handle_intersection_p2p_bf().

◆ my_element_count

uint32_t Operation::my_element_count

◆ bf_data_size

uint32_t Operation::bf_data_size

size of the bloomfilter in bf_data.

Definition at line 277 of file gnunet-service-seti.c.

Referenced by handle_intersection_p2p_bf().

◆ bf_bits_per_element

uint32_t Operation::bf_bits_per_element

size of the bloomfilter

Definition at line 282 of file gnunet-service-seti.c.

Referenced by handle_intersection_p2p_bf().

◆ phase [1/2]

enum IntersectionOperationPhase Operation::phase

◆ client_done_sent

int Operation::client_done_sent

Did we send the client that we are done?

Definition at line 303 of file gnunet-service-seti.c.

Referenced by handle_intersection_p2p_done(), and send_client_done().

◆ channel_death_expected

int Operation::channel_death_expected

Set whenever we reach the state where the death of the channel is perfectly find and should NOT result in the operation being cancelled.

Definition at line 310 of file gnunet-service-seti.c.

Referenced by _GSS_operation_destroy2(), finished_local_operations(), and send_p2p_done().

◆ return_intersection

int Operation::return_intersection

When are elements sent to the client, and which elements are sent?

Definition at line 325 of file gnunet-service-seti.c.

Referenced by handle_client_accept(), handle_client_evaluate(), handle_intersection_p2p_done(), process_bf(), send_client_removed_element(), and send_remaining_elements().

◆ initial_size

uint64_t Operation::initial_size

Initial size of our set, just before the operation started.

Definition at line 238 of file gnunet-service-setu.c.

Referenced by handle_client_accept(), handle_client_evaluate(), and handle_union_p2p_strata_estimator().

◆ se

struct StrataEstimator* Operation::se

Copy of the set's strata estimator at the time of creation of this operation.

Definition at line 280 of file gnunet-service-setu.c.

Referenced by _GSS_operation_destroy(), handle_client_accept(), handle_client_evaluate(), and handle_union_p2p_strata_estimator().

◆ remote_ibf

struct InvertibleBloomFilter* Operation::remote_ibf

The IBF we currently receive.

Definition at line 285 of file gnunet-service-setu.c.

Referenced by _GSS_operation_destroy(), check_union_p2p_ibf(), decode_and_send(), and handle_union_p2p_ibf().

◆ local_ibf

struct InvertibleBloomFilter* Operation::local_ibf

The IBF with the local set's element.

Definition at line 290 of file gnunet-service-setu.c.

Referenced by _GSS_operation_destroy(), decode_and_send(), prepare_ibf(), prepare_ibf_iterator(), and send_ibf().

◆ key_to_element

struct GNUNET_CONTAINER_MultiHashMap32* Operation::key_to_element

Maps unsalted IBF-Keys to elements.

Used as a multihashmap, the keys being the lower 32bit of the IBF-Key. Colliding IBF-Keys are linked.

Definition at line 297 of file gnunet-service-setu.c.

Referenced by _GSS_operation_destroy(), handle_client_accept(), handle_client_evaluate(), handle_union_p2p_full_done(), initialize_key_to_element(), op_get_element(), op_register_element(), prepare_ibf(), send_client_done(), send_client_element(), and send_offers_for_key().

◆ demanded_hashes

struct GNUNET_CONTAINER_MultiHashMap* Operation::demanded_hashes

Hashes for elements that we have demanded from the other peer.

Definition at line 308 of file gnunet-service-setu.c.

Referenced by _GSS_operation_destroy(), check_union_p2p_elements(), handle_client_accept(), handle_client_evaluate(), handle_union_p2p_elements(), handle_union_p2p_offer(), and maybe_finish().

◆ phase [2/2]

enum UnionOperationPhase Operation::phase

Current state of the operation.

Definition at line 313 of file gnunet-service-setu.c.

◆ ibf_buckets_received

unsigned int Operation::ibf_buckets_received

Number of ibf buckets already received into the remote_ibf.

Definition at line 323 of file gnunet-service-setu.c.

Referenced by check_union_p2p_ibf(), and handle_union_p2p_ibf().

◆ salt_send

uint32_t Operation::salt_send

Salt that we're using for sending IBFs.

Definition at line 328 of file gnunet-service-setu.c.

Referenced by decode_and_send(), handle_client_accept(), handle_client_evaluate(), prepare_ibf_iterator(), and send_ibf().

◆ salt_receive

uint32_t Operation::salt_receive

Salt for the IBF we've received and that we're currently decoding.

Definition at line 333 of file gnunet-service-setu.c.

Referenced by check_union_p2p_ibf(), decode_and_send(), handle_client_accept(), handle_client_evaluate(), and handle_union_p2p_ibf().

◆ received_fresh

uint32_t Operation::received_fresh

Number of elements we received from the other peer that were not in the local set yet.

Definition at line 339 of file gnunet-service-setu.c.

Referenced by handle_union_p2p_elements(), and handle_union_p2p_full_element().

◆ received_total

uint32_t Operation::received_total

Total number of elements received from the other peer.

Definition at line 344 of file gnunet-service-setu.c.

Referenced by handle_union_p2p_elements(), and handle_union_p2p_full_element().

◆ symmetric

int Operation::symmetric

GNUNET_YES to also send back set elements we are sending to the remote peer.

Definition at line 383 of file gnunet-service-setu.c.

Referenced by handle_client_accept(), handle_client_evaluate(), and handle_union_p2p_demand().

◆ rtt_bandwidth_tradeoff

double Operation::rtt_bandwidth_tradeoff

User defined Bandwidth Round Trips Tradeoff.

Definition at line 407 of file gnunet-service-setu.c.

Referenced by handle_union_p2p_strata_estimator().

◆ ibf_number_buckets_per_element

unsigned int Operation::ibf_number_buckets_per_element

Number of Element per bucket in IBF.

Definition at line 412 of file gnunet-service-setu.c.

◆ ibf_bucket_number

unsigned Operation::ibf_bucket_number

Number of buckets in IBF.

Definition at line 417 of file gnunet-service-setu.c.


The documentation for this struct was generated from the following files: