/*
This file is part of GNUnet.
- (C) 2012 Christian Grothoff (and other contributing authors)
+ (C) 2008--2013 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
*/
/**
- * @file testbed/gnunet-service-testbed_cache.h
+ * @file testbed/gnunet-service-testbed_cache.c
* @brief testbed cache implementation
* @author Sree Harsha Totakura
*/
/**
* Looks up in the cache and returns the entry
*
- * @param id the peer identity of the peer whose corresponding entry has to be looked up
+ * @param key the peer identity of the peer whose corresponding entry has to be
+ * looked up
* @return the HELLO message; NULL if not found
*/
static struct CacheEntry *
case CGT_CORE_HANDLE:
if (NULL == entry->core_handle)
continue;
+ if (NULL == entry->peer_identity) /* Our CORE connection isn't ready yet */
+ continue;
break;
}
break;
*
* @param cls closure
* @param peer the peer that connected
- * @param ats performance data
- * @param ats_count number of entries in ats (excluding 0-termination)
*/
static void
transport_peer_connect_notify_cb (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_ATS_Information *ats,
- uint32_t ats_count)
+ const struct GNUNET_PeerIdentity *peer)
{
peer_connect_notify_cb (cls, peer, CGT_TRANSPORT_HANDLE);
}
*
* @param cls closure
* @param peer peer identity this notification is about
- * @param atsi performance data for the connection
- * @param atsi_count number of records in 'atsi'
*/
static void
-core_peer_connect_cb (void *cls, const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_ATS_Information *atsi,
- unsigned int atsi_count)
+core_peer_connect_cb (void *cls, const struct GNUNET_PeerIdentity *peer)
{
peer_connect_notify_cb (cls, peer, CGT_CORE_HANDLE);
}
* lookup in the cache; if not, a new operation is started to open the transport
* handle and will be given in the callback when it is available.
*
- * @param cls the cache entry
+ * @param peer_id the index of the peer
+ * @param cgh the CacheGetHandle
+ * @param cfg the configuration with which the transport handle has to be
+ * created if it was not present in the cache
+ * @param target the peer identify of the peer whose connection to
+ * TRANSPORT/CORE (depending on the type of 'cgh') subsystem will be
+ * notified through the connect_notify_cb. Can be NULL
+ * @param connect_notify_cb the callback to call when the given target peer is
+ * connected. This callback will only be called once or never again (in
+ * case the target peer cannot be connected). Can be NULL
+ * @param connect_notify_cb_cls the closure for the above callback
+ * @return the handle which can be used to cancel or mark that the handle is no
+ * longer being used
*/
static struct GSTCacheGetHandle *
cache_get_handle (unsigned int peer_id, struct GSTCacheGetHandle *cgh,
if (NULL != handle)
{
if (GNUNET_SCHEDULER_NO_TASK == entry->notify_task)
- entry->notify_task = GNUNET_SCHEDULER_add_now (&call_cgh_cb, entry);
+ {
+ if (NULL != search_suitable_cgh (entry, entry->cgh_qhead))
+ entry->notify_task = GNUNET_SCHEDULER_add_now (&call_cgh_cb, entry);
+ }
return cgh;
}
+ op = NULL;
switch (cgh->type)
{
case CGT_TRANSPORT_HANDLE:
&oprelease_get_handle_core);
entry->core_op = op;
break;
+ default:
+ GNUNET_assert (0);
}
GNUNET_TESTBED_operation_queue_insert_ (GST_opq_openfds, op);
GNUNET_TESTBED_operation_begin_wait_ (op);
* connected. This callback will only be called once or never again (in
* case the target peer cannot be connected). Can be NULL
* @param connect_notify_cb_cls the closure for the above callback
- * @return the handle which can be used cancel or mark that the handle is no
+ * @return the handle which can be used to cancel or mark that the handle is no
* longer being used
*/
struct GSTCacheGetHandle *
* connected. This callback will only be called once or never again (in
* case the target peer cannot be connected). Can be NULL
* @param connect_notify_cb_cls the closure for the above callback
- * @return the handle which can be used cancel or mark that the handle is no
+ * @return the handle which can be used to cancel or mark that the handle is no
* longer being used
*/
struct GSTCacheGetHandle *
* Caches the HELLO of the given peer. Updates the HELLO if it was already
* cached before
*
- * @param id the peer identity of the peer whose HELLO has to be cached
+ * @param peer_id the peer identity of the peer whose HELLO has to be cached
* @param hello the HELLO message
*/
void