* @author Christian Grothoff
*/
#include "platform.h"
+#include "gnunet_util_lib.h"
#include "gnunet_load_lib.h"
#include "gnunet-service-fs.h"
#include "gnunet-service-fs_cp.h"
/**
* Map from peer identities to 'struct GSF_ConnectPeer' entries.
*/
-static struct GNUNET_CONTAINER_MultiHashMap *cp_map;
+static struct GNUNET_CONTAINER_MultiPeerMap *cp_map;
/**
* Where do we store respect information?
static char *
get_respect_filename (const struct GNUNET_PeerIdentity *id)
{
- struct GNUNET_CRYPTO_HashAsciiEncoded fil;
char *fn;
- GNUNET_CRYPTO_hash_to_enc (&id->hashPubKey, &fil);
- GNUNET_asprintf (&fn, "%s%s%s", respectDirectory, DIR_SEPARATOR_STR, &fil);
+ GNUNET_asprintf (&fn,
+ "%s%s%s",
+ respectDirectory,
+ DIR_SEPARATOR_STR,
+ GNUNET_i2s_full (id));
return fn;
}
if (0 != cp->inc_preference)
{
- GNUNET_ATS_change_preference (GSF_ats, &target, GNUNET_ATS_PREFERENCE_BANDWIDTH,
+ GNUNET_ATS_performance_change_preference (GSF_ats, &target, GNUNET_ATS_PREFERENCE_BANDWIDTH,
(double) cp->inc_preference,
GNUNET_ATS_PREFERENCE_END);
cp->inc_preference = 0;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Reserved %d bytes / need to wait %s for reservation\n",
- (int) amount,
+ (int) amount,
GNUNET_STRINGS_relative_time_to_string (res_delay, GNUNET_YES));
cp->rc = NULL;
if (0 == amount)
GNUNET_free (fn);
cp->request_map = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_NO);
GNUNET_break (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (cp_map,
- &GSF_connected_peer_get_identity2_ (cp)->hashPubKey,
+ GNUNET_CONTAINER_multipeermap_put (cp_map,
+ GSF_connected_peer_get_identity2_ (cp),
cp,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
GNUNET_STATISTICS_set (GSF_stats, gettext_noop ("# peers connected"),
- GNUNET_CONTAINER_multihashmap_size (cp_map),
+ GNUNET_CONTAINER_multipeermap_size (cp_map),
GNUNET_NO);
GSF_push_start_ (cp);
return cp;
{
if (NULL == cp_map)
return NULL;
- return GNUNET_CONTAINER_multihashmap_get (cp_map, &peer->hashPubKey);
+ return GNUNET_CONTAINER_multipeermap_get (cp_map, peer);
}
bt = GNUNET_TIME_relative_ntoh (msm->duration);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Migration of content to peer `%s' blocked for %s\n"),
- GNUNET_i2s (other),
+ GNUNET_i2s (other),
GNUNET_STRINGS_relative_time_to_string (bt, GNUNET_YES));
cp->ppd.migration_blocked_until = GNUNET_TIME_relative_to_absolute (bt);
if (GNUNET_SCHEDULER_NO_TASK == cp->mig_revive_task)
{
pr = peerreq->pr;
prd = GSF_pending_request_get_data_ (pr);
- if (prd->type == type)
+ if (prd->type == type)
{
if (prd->ttl.abs_value_us >= GNUNET_TIME_absolute_get ().abs_value_us + ttl * 1000LL)
{
peerreq = GNUNET_new (struct PeerRequest);
peerreq->cp = cp;
- pr = GSF_pending_request_create_ (options, type, &gm->query,
+ pr = GSF_pending_request_create_ (options, type, &gm->query,
target,
(bfsize >
0) ? (const char *) &opt[bits] : NULL,
/**
* Transmit a message to the given peer as soon as possible.
* If the peer disconnects before the transmission can happen,
- * the callback is invoked with a 'NULL' buffer.
+ * the callback is invoked with a `NULL` @a buffer.
*
* @param cp target peer
- * @param is_query is this a query (GNUNET_YES) or content (GNUNET_NO) or neither (GNUNET_SYSERR)
+ * @param is_query is this a query (#GNUNET_YES) or content (#GNUNET_NO) or neither (#GNUNET_SYSERR)
* @param priority how important is this request?
* @param timeout when does this request timeout (call gmc with error)
* @param size number of bytes we would like to send to the peer
* @param gmc function to call to get the message
- * @param gmc_cls closure for gmc
+ * @param gmc_cls closure for @a gmc
* @return handle to cancel request
*/
struct GSF_PeerTransmitHandle *
return; /* must have been disconnect from core with
* 'peer' == my_id, ignore */
GNUNET_assert (GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_remove (cp_map,
- &peer->hashPubKey, cp));
+ GNUNET_CONTAINER_multipeermap_remove (cp_map,
+ peer,
+ cp));
GNUNET_STATISTICS_set (GSF_stats, gettext_noop ("# peers connected"),
- GNUNET_CONTAINER_multihashmap_size (cp_map),
+ GNUNET_CONTAINER_multipeermap_size (cp_map),
GNUNET_NO);
if (NULL != cp->migration_pth)
{
/**
* Function that calls the callback for each peer.
*
- * @param cls the 'struct IterationContext*'
+ * @param cls the `struct IterationContext *`
* @param key identity of the peer
- * @param value the 'struct GSF_ConnectedPeer*'
- * @return GNUNET_YES to continue iteration
+ * @param value the `struct GSF_ConnectedPeer *`
+ * @return #GNUNET_YES to continue iteration
*/
static int
-call_iterator (void *cls, const struct GNUNET_HashCode * key, void *value)
+call_iterator (void *cls, const struct GNUNET_PeerIdentity * key, void *value)
{
struct IterationContext *ic = cls;
struct GSF_ConnectedPeer *cp = value;
* Iterate over all connected peers.
*
* @param it function to call for each peer
- * @param it_cls closure for it
+ * @param it_cls closure for @a it
*/
void
GSF_iterate_connected_peers_ (GSF_ConnectedPeerIterator it, void *it_cls)
ic.it = it;
ic.it_cls = it_cls;
- GNUNET_CONTAINER_multihashmap_iterate (cp_map, &call_iterator, &ic);
+ GNUNET_CONTAINER_multipeermap_iterate (cp_map, &call_iterator, &ic);
}
* @return GNUNET_OK to continue iteration
*/
static int
-flush_respect (void *cls, const struct GNUNET_HashCode * key, void *value)
+flush_respect (void *cls, const struct GNUNET_PeerIdentity * key, void *value)
{
struct GSF_ConnectedPeer *cp = value;
char *fn;
if (NULL == cp_map)
return;
- GNUNET_CONTAINER_multihashmap_iterate (cp_map, &flush_respect, NULL);
+ GNUNET_CONTAINER_multipeermap_iterate (cp_map, &flush_respect, NULL);
if (NULL == tc)
return;
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
void
GSF_connected_peer_init_ ()
{
- cp_map = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_YES);
+ cp_map = GNUNET_CONTAINER_multipeermap_create (128, GNUNET_YES);
GNUNET_assert (GNUNET_OK ==
GNUNET_CONFIGURATION_get_value_filename (GSF_cfg, "fs",
"RESPECT",
&respectDirectory));
- GNUNET_DISK_directory_create (respectDirectory);
+ GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_create (respectDirectory));
GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_HIGH,
&cron_flush_respect, NULL);
}
* @param cls closure, unused
* @param key current key code
* @param value value in the hash map (peer entry)
- * @return GNUNET_YES (we should continue to iterate)
+ * @return #GNUNET_YES (we should continue to iterate)
*/
static int
-clean_peer (void *cls, const struct GNUNET_HashCode * key, void *value)
+clean_peer (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
{
- GSF_peer_disconnect_handler_ (NULL, (const struct GNUNET_PeerIdentity *) key);
+ GSF_peer_disconnect_handler_ (NULL, key);
return GNUNET_YES;
}
GSF_connected_peer_done_ ()
{
cron_flush_respect (NULL, NULL);
- GNUNET_CONTAINER_multihashmap_iterate (cp_map, &clean_peer, NULL);
- GNUNET_CONTAINER_multihashmap_destroy (cp_map);
+ GNUNET_CONTAINER_multipeermap_iterate (cp_map, &clean_peer, NULL);
+ GNUNET_CONTAINER_multipeermap_destroy (cp_map);
cp_map = NULL;
GNUNET_free (respectDirectory);
respectDirectory = NULL;
* @param cls the 'struct GSF_LocalClient*' to look for
* @param key current key code
* @param value value in the hash map (peer entry)
- * @return GNUNET_YES (we should continue to iterate)
+ * @return #GNUNET_YES (we should continue to iterate)
*/
static int
-clean_local_client (void *cls, const struct GNUNET_HashCode * key, void *value)
+clean_local_client (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
{
const struct GSF_LocalClient *lc = cls;
struct GSF_ConnectedPeer *cp = value;
{
if (NULL == cp_map)
return; /* already cleaned up */
- GNUNET_CONTAINER_multihashmap_iterate (cp_map, &clean_local_client,
+ GNUNET_CONTAINER_multipeermap_iterate (cp_map, &clean_local_client,
(void *) lc);
}