GNUnet 0.21.1
Operation Struct Reference

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

#include </home/buildbot/bb-worker/worker/gnunet_firefly/build/src/contrib/service/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 MultiStrataEstimatorse
 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...
 
uint64_t 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...
 
uint64_t byzantine_lower_bound
 Lower bound for the set size, used only when byzantine mode is enabled. More...
 
uint64_t rtt_bandwidth_tradeoff
 User defined Bandwidth Round Trips Tradeoff. More...
 
uint8_t ibf_number_buckets_per_element
 Number of Element per bucket in IBF. More...
 
uint8_t ibf_bucket_number_factor
 Set difference is multiplied with this factor to gennerate large enough IBF. More...
 
uint8_t peer_site
 Defines which site a client is 0 = Initiating peer 1 = Receiving peer. More...
 
uint64_t local_element_count
 Local peer element count. More...
 
uint8_t mode_of_operation
 Mode of operation that was chosen by the algorithm. More...
 
struct GNUNET_CONTAINER_MultiHashMapmessage_control_flow
 Hashmap to keep track of the send/received messages. More...
 
struct GNUNET_CONTAINER_MultiHashMapinquiries_sent
 Hashmap to keep track of the send/received inquiries (ibf keys) More...
 
uint64_t total_elements_size_local
 Total size of local set. More...
 
uint64_t byzantine_upper_bound
 Limit of number of elements in set. More...
 
uint8_t differential_sync_iterations
 is the count of already passed differential sync iterations More...
 
uint64_t remote_set_diff
 Estimated or committed set difference at the start. More...
 
uint64_t local_set_diff
 Estimated or committed set difference at the start. More...
 
bool active_passive_switch_required
 Boolean to enforce an active passive switch. 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.

◆ 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

Channel to the peer.

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

Referenced by channel_new_cb().

◆ listener

struct Listener * Operation::listener

Port this operation runs on.

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

Referenced by channel_new_cb(), and get_incoming().

◆ mq

struct GNUNET_MQ_Handle * Operation::mq

Message queue for the channel.

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

◆ context_msg

struct GNUNET_MessageHeader * Operation::context_msg

Context message, may be NULL.

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

◆ set

struct Set * Operation::set

Set associated with the operation, NULL until the spec has been associated with a set.

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

Referenced by handle_client_cancel().

◆ state

struct OperationState* Operation::state

Operation-specific operation state.

Note that the exact type depends on this being a union or intersection operation (and thus on vt).

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

Referenced by httpdomain.autohttp.bottle.AutobottleDirective::run(), httpdomain.autohttp.flask.AutoflaskDirective::run(), httpdomain.autohttp.flaskqref.QuickReferenceFlaskDirective::run(), httpdomain.autohttp.tornado.AutoTornadoDirective::run(), and typescriptdomain.TypeScriptDefinition::run().

◆ 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.

◆ 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.

◆ 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.

◆ remote_element_count

uint32_t Operation::remote_element_count

Remote peers element count.

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

Referenced by handle_union_p2p_request_full(), and handle_union_p2p_send_full().

◆ client_request_id

uint32_t Operation::client_request_id

ID used to identify an operation between service and client.

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

◆ result_mode

enum GNUNET_SET_ResultMode Operation::result_mode

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

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

◆ 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.

◆ 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.

◆ byzantine

int Operation::byzantine

GNUNET_YES to fail operations where Byzantine faults are suspected

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

◆ byzantine_lower_bound [1/2]

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.

◆ 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.

◆ 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.

◆ 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 186 of file gnunet-service-seti.c.

◆ 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 193 of file gnunet-service-seti.c.

◆ remote_bf

struct GNUNET_CONTAINER_BloomFilter* Operation::remote_bf

The bf we currently receive.

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

◆ local_bf

struct GNUNET_CONTAINER_BloomFilter* Operation::local_bf

BF of the set's element.

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

◆ my_elements

struct GNUNET_CONTAINER_MultiHashMap* Operation::my_elements

Remaining elements in the intersection operation.

Maps element-id-hashes to 'elements in our set'.

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

◆ 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 250 of file gnunet-service-seti.c.

◆ 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 256 of file gnunet-service-seti.c.

◆ bf_data_offset

uint32_t Operation::bf_data_offset

How many bytes of bf_data are valid?

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

◆ my_element_count

uint32_t Operation::my_element_count

Current element count contained within my_elements.

(May differ briefly during initialization.)

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

◆ bf_data_size

uint32_t Operation::bf_data_size

size of the bloomfilter in bf_data.

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

◆ bf_bits_per_element

uint32_t Operation::bf_bits_per_element

size of the bloomfilter

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

Referenced by handle_intersection_p2p_bf().

◆ phase [1/2]

enum IntersectionOperationPhase Operation::phase

Current state of the operation.

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

◆ client_done_sent

int Operation::client_done_sent

Did we send the client that we are done?

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

◆ 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 311 of file gnunet-service-seti.c.

◆ return_intersection

int Operation::return_intersection

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

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

◆ initial_size

uint64_t Operation::initial_size

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

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

◆ se

struct MultiStrataEstimator* Operation::se

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

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

◆ remote_ibf

struct InvertibleBloomFilter* Operation::remote_ibf

The IBF we currently receive.

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

◆ local_ibf

struct InvertibleBloomFilter* Operation::local_ibf

The IBF with the local set's element.

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

◆ 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 348 of file gnunet-service-setu.c.

◆ demanded_hashes

struct GNUNET_CONTAINER_MultiHashMap* Operation::demanded_hashes

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

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

◆ phase [2/2]

enum UnionOperationPhase Operation::phase

Current state of the operation.

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

◆ ibf_buckets_received

uint64_t Operation::ibf_buckets_received

Number of ibf buckets already received into the remote_ibf.

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

◆ salt_send

uint32_t Operation::salt_send

Salt that we're using for sending IBFs.

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

◆ salt_receive

uint32_t Operation::salt_receive

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

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

◆ 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 390 of file gnunet-service-setu.c.

◆ received_total

uint32_t Operation::received_total

Total number of elements received from the other peer.

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

◆ symmetric

int Operation::symmetric

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

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

◆ byzantine_lower_bound [2/2]

uint64_t Operation::byzantine_lower_bound

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

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

◆ rtt_bandwidth_tradeoff

uint64_t Operation::rtt_bandwidth_tradeoff

User defined Bandwidth Round Trips Tradeoff.

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

Referenced by handle_union_p2p_request_full(), and handle_union_p2p_send_full().

◆ ibf_number_buckets_per_element

uint8_t Operation::ibf_number_buckets_per_element

Number of Element per bucket in IBF.

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

◆ ibf_bucket_number_factor

uint8_t Operation::ibf_bucket_number_factor

Set difference is multiplied with this factor to gennerate large enough IBF.

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

Referenced by handle_union_p2p_request_full(), and handle_union_p2p_send_full().

◆ peer_site

uint8_t Operation::peer_site

Defines which site a client is 0 = Initiating peer 1 = Receiving peer.

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

◆ local_element_count

uint64_t Operation::local_element_count

Local peer element count.

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

Referenced by handle_union_p2p_request_full(), and handle_union_p2p_send_full().

◆ mode_of_operation

uint8_t Operation::mode_of_operation

Mode of operation that was chosen by the algorithm.

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

Referenced by handle_union_p2p_request_full(), and handle_union_p2p_send_full().

◆ message_control_flow

struct GNUNET_CONTAINER_MultiHashMap* Operation::message_control_flow

Hashmap to keep track of the send/received messages.

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

◆ inquiries_sent

struct GNUNET_CONTAINER_MultiHashMap* Operation::inquiries_sent

Hashmap to keep track of the send/received inquiries (ibf keys)

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

◆ total_elements_size_local

uint64_t Operation::total_elements_size_local

Total size of local set.

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

◆ byzantine_upper_bound

uint64_t Operation::byzantine_upper_bound

Limit of number of elements in set.

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

◆ differential_sync_iterations

uint8_t Operation::differential_sync_iterations

is the count of already passed differential sync iterations

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

◆ remote_set_diff

uint64_t Operation::remote_set_diff

Estimated or committed set difference at the start.

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

◆ local_set_diff

uint64_t Operation::local_set_diff

Estimated or committed set difference at the start.

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

◆ active_passive_switch_required

bool Operation::active_passive_switch_required

Boolean to enforce an active passive switch.

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


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