X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdht%2Fgnunet-service-dht_neighbours.h;h=b3b33e31839623afa303b4728d2ce9e489a753dc;hb=016f9c0b2e61c6dab0057a3b4618db5624badf51;hp=08357d7ff1e8552360fecbdfe98c46fe28b1fa55;hpb=a864897478e2ee94ab36648e7f1db6f0dd57ea43;p=oweals%2Fgnunet.git diff --git a/src/dht/gnunet-service-dht_neighbours.h b/src/dht/gnunet-service-dht_neighbours.h index 08357d7ff..b3b33e318 100644 --- a/src/dht/gnunet-service-dht_neighbours.h +++ b/src/dht/gnunet-service-dht_neighbours.h @@ -27,14 +27,23 @@ #ifndef GNUNET_SERVICE_DHT_NEIGHBOURS_H #define GNUNET_SERVICE_DHT_NEIGHBOURS_H +#include "gnunet_util_lib.h" +#include "gnunet_block_lib.h" +#include "gnunet_dht_service.h" /** - * Perform a PUT operation. + * Perform a PUT operation. Forwards the given request to other + * peers. Does not store the data locally. Does not give the + * data to local clients. May do nothing if this is the only + * peer in the network (or if we are the closest peer in the + * network). * * @param type type of the block * @param options routing options - * @param desired_replication_level desired replication count + * @param desired_replication_level desired replication level * @param expiration_time when does the content expire + * @param hop_count how many hops has this message traversed so far + * @param bf Bloom filter of peers this PUT has already traversed * @param key key for the content * @param put_path_length number of entries in put_path * @param put_path peers this request has traversed so far (if tracked) @@ -42,48 +51,53 @@ * @param data_size number of bytes in data */ void -GST_NEIGHBOURS_handle_put (uint32_t type, - uint32_t options, - uint32_t desired_replication_level, - GNUNET_TIME_Absolute expiration_time, - const GNUNET_HashCode *key, - unsigned int put_path_length, - struct GNUNET_PeerIdentity *put_path, - const void *data, - size_t data_size); +GDS_NEIGHBOURS_handle_put (enum GNUNET_BLOCK_Type type, + enum GNUNET_DHT_RouteOption options, + uint32_t desired_replication_level, + struct GNUNET_TIME_Absolute expiration_time, + uint32_t hop_count, + struct GNUNET_CONTAINER_BloomFilter *bf, + const struct GNUNET_HashCode * key, + unsigned int put_path_length, + struct GNUNET_PeerIdentity *put_path, + const void *data, size_t data_size); /** - * Perform a GET operation. - * + * Perform a GET operation. Forwards the given request to other + * peers. Does not lookup the key locally. May do nothing if this is + * the only peer in the network (or if we are the closest peer in the + * network). * * @param type type of the block * @param options routing options * @param desired_replication_level desired replication count + * @param hop_count how many hops did this request traverse so far? * @param key key for the content * @param xquery extended query * @param xquery_size number of bytes in xquery * @param reply_bf bloomfilter to filter duplicates * @param reply_bf_mutator mutator for reply_bf - * @param peer_bf filter for peers not to select (again) + * @param peer_bf filter for peers not to select (again, updated) */ void -GST_NEIGHBOURS_handle_get (uint32_t type, - uint32_t options, - uint32_t desired_replication_level, - const GNUNET_HashCode *key, - const void *xquery, - size_t xquery_size, - const struct GNUNET_CONTAINER_BloomFilter *reply_bf, - uint32_t reply_bf_mutator, - const struct GNUNET_CONTAINER_BloomFilter *peer_bf); +GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type, + enum GNUNET_DHT_RouteOption options, + uint32_t desired_replication_level, + uint32_t hop_count, const struct GNUNET_HashCode * key, + const void *xquery, size_t xquery_size, + const struct GNUNET_CONTAINER_BloomFilter *reply_bf, + uint32_t reply_bf_mutator, + struct GNUNET_CONTAINER_BloomFilter *peer_bf); /** - * Handle a reply (route to origin). + * Handle a reply (route to origin). Only forwards the reply back to + * other peers waiting for it. Does not do local caching or + * forwarding to local clients. * + * @param target neighbour that should receive the block (if still connected) * @param type type of the block - * @param options routing options * @param expiration_time when does the content expire * @param key key for the content * @param put_path_length number of entries in put_path @@ -94,29 +108,40 @@ GST_NEIGHBOURS_handle_get (uint32_t type, * @param data_size number of bytes in data */ void -GST_NEIGHBOURS_handle_reply (uint32_t type, - uint32_t options, - GNUNET_TIME_Absolute expiration_time, - const GNUNET_HashCode *key, - unsigned int put_path_length, - struct GNUNET_PeerIdentity *put_path, - unsigned int get_path_length, - struct GNUNET_PeerIdentity *get_path, - const void *data, - size_t data_size); +GDS_NEIGHBOURS_handle_reply (const struct GNUNET_PeerIdentity *target, + enum GNUNET_BLOCK_Type type, + struct GNUNET_TIME_Absolute expiration_time, + const struct GNUNET_HashCode * key, + unsigned int put_path_length, + const struct GNUNET_PeerIdentity *put_path, + unsigned int get_path_length, + const struct GNUNET_PeerIdentity *get_path, + const void *data, size_t data_size); /** * Initialize neighbours subsystem. + * + * @return GNUNET_OK on success, GNUNET_SYSERR on error */ -void -GST_NEIGHBOURS_init (void); +int +GDS_NEIGHBOURS_init (void); + /** * Shutdown neighbours subsystem. */ void -GST_NEIGHBOURS_done (void); +GDS_NEIGHBOURS_done (void); + + +/** + * Get the ID of the local node. + * + * @return identity of the local node + */ +struct GNUNET_PeerIdentity * +GDS_NEIGHBOURS_get_id (); #endif