26 #ifndef GNUNET_SERVICE_FS_PR_H 27 #define GNUNET_SERVICE_FS_PR_H 190 uint32_t reply_anonymity_level,
void GSF_cadet_lookup_(struct GSF_PendingRequest *pr)
Consider downloading via cadet (if possible)
void GSF_dht_lookup_(struct GSF_PendingRequest *pr)
Consider looking up the data in the DHT (anonymity-level permitting).
const struct GNUNET_PeerIdentity * target
Identity of a peer hosting the content, otherwise NULl.
int GSF_pending_request_test_active_(struct GSF_PendingRequest *pr)
Check if the given request is still active.
struct GSF_PendingRequest * GSF_pending_request_create_(enum GSF_PendingRequestOptions options, enum GNUNET_BLOCK_Type type, const struct GNUNET_HashCode *query, const struct GNUNET_PeerIdentity *target, const char *bf_data, size_t bf_size, uint32_t mingle, uint32_t anonymity_level, uint32_t priority, int32_t ttl, GNUNET_PEER_Id sender_pid, GNUNET_PEER_Id origin_pid, const struct GNUNET_HashCode *replies_seen, unsigned int replies_seen_count, GSF_PendingRequestReplyHandler rh, void *rh_cls)
Create a new pending request.
Request is allowed to refresh bloomfilter and change mingle value.
void GSF_pending_request_update_(struct GSF_PendingRequest *pr, const struct GNUNET_HashCode *replies_seen, unsigned int replies_seen_count)
Update a given pending request with additional replies that have been seen.
void GSF_local_lookup_(struct GSF_PendingRequest *pr, GSF_LocalLookupContinuation cont, void *cont_cls)
Look up the request in the local datastore.
static GNUNET_CronTime last_transmission
struct GNUNET_MQ_Envelope * GSF_pending_request_get_message_(struct GSF_PendingRequest *pr)
Generate the message corresponding to the given pending request for transmission to other peers...
Response from FS service with a result for a previous FS search.
uint32_t num_transmissions
Counter for how often this request has been transmitted (estimate, because we might have the same req...
GNUNET_BLOCK_Type
Blocks in the datastore and the datacache must have a unique type.
void GSF_pending_request_cancel_(struct GSF_PendingRequest *pr, int full_cleanup)
Explicitly cancel a pending request.
struct GNUNET_TIME_Absolute ttl
Current TTL for the request.
No special options (P2P-default).
unsigned int results_found
Number of results we have found for this request so far.
uint32_t anonymity_level
Desired anonymity level.
struct GSF_PendingRequestPlanBijection * pr_head
Fields for the plan module to track a DLL with the request.
void GSF_iterate_pending_requests_(GSF_PendingRequestIterator it, void *cls)
Iterate over all pending requests.
Request priority is allowed to be exceeded.
shared data structures of gnunet-service-fs.c
struct GNUNET_TIME_Absolute start_time
When did we start with the request.
struct GNUNET_HashCode query
Primary query hash for this request.
void(* GSF_LocalLookupContinuation)(void *cls, struct GSF_PendingRequest *pr, enum GNUNET_BLOCK_EvaluationResult result)
Function to be called after we're done processing replies from the local lookup.
unsigned int replies_seen_count
Number of valid entries in the 'replies_seen' array.
Request persists indefinitely (no expiration).
void GSF_pending_request_init_(void)
Setup the subsystem.
Public data (in the sense of not encapsulated within 'gnunet-service-fs_pr', not in the sense of netw...
GNUNET_PEER_Id origin_pid
Identity of the peer that we should never forward this query to since it originated this query (0 for...
unsigned int GNUNET_PEER_Id
A GNUNET_PEER_Id is simply a shorter version of a "struct GNUNET_PeerIdentifier" that can be used ins...
void handle_p2p_put(void *cls, const struct PutMessage *put)
Handle P2P "CONTENT" message.
int GSF_pending_request_test_target_(struct GSF_PendingRequest *pr, const struct GNUNET_PeerIdentity *target)
Is the given target a legitimate peer for forwarding the given request?
int(* GSF_PendingRequestIterator)(void *cls, const struct GNUNET_HashCode *key, struct GSF_PendingRequest *pr)
Signature of function called on each request.
struct GSF_PendingRequestData * GSF_pending_request_get_data_(struct GSF_PendingRequest *pr)
Obtain the public data associated with a pending request.
static int result
Global testing status.
void * rh_cls
Closure for rh.
uint32_t respect_offered
How much respect did we (in total) offer for this request so far (estimate, because we might have the...
void GSF_pending_request_done_(void)
Shutdown the subsystem.
enum GNUNET_BLOCK_Type type
Type of the requested block.
Request must only be processed locally.
GSF_PendingRequestReplyHandler rh
Function to call if we encounter a reply.
static char * expiration
Credential TTL.
struct GSF_PendingRequestPlanBijection * pr_tail
Fields for the plan module to track a DLL with the request.
struct GNUNET_HashCode key
The key used in the DHT.
uint32_t original_priority
Priority that this request (originally) had for us.
GNUNET_BLOCK_EvaluationResult
Possible ways for how a block may relate to a query.
The identity of the host (wraps the signing key of the peer).
Option mask for typical local requests.
enum GSF_PendingRequestOptions options
Options for the request.
Request must only be forwarded (no routing)
void(* GSF_PendingRequestReplyHandler)(void *cls, enum GNUNET_BLOCK_EvaluationResult eval, struct GSF_PendingRequest *pr, uint32_t reply_anonymity_level, struct GNUNET_TIME_Absolute expiration, struct GNUNET_TIME_Absolute last_transmission, enum GNUNET_BLOCK_Type type, const void *data, size_t data_len)
Handle a reply to a pending request.
int GSF_pending_request_is_compatible_(struct GSF_PendingRequest *pra, struct GSF_PendingRequest *prb)
Test if two pending requests are compatible (would generate the same query modulo filters and should ...
Time for absolute times used by GNUnet, in microseconds.
uint32_t priority
Priority that this request (still) has for us.
uint32_t data
The data value.
int has_started
Has this request been started yet (local/p2p operations)? Or are we still constructing it...
GSF_PendingRequestOptions
Options for pending requests (bits to be ORed).
GNUNET_PEER_Id sender_pid
Identity of the peer that we should use for the 'sender' (recipient of the response) when forwarding ...
struct GNUNET_HashCode * replies_seen
Array of hash codes of replies we've already seen.
M:N binding of plans to pending requests.