* @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;
}
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,
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)
{
* @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;
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",
* @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;
* @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);
}