/*
This file is part of GNUnet.
- (C) 2012 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2012 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
* @file dht/gnunet-dht-monitor.c
*/
static int ret;
+/**
+ * Task scheduled to handle timeout.
+ */
+static struct GNUNET_SCHEDULER_Task *tt;
+
/**
* Stop monitoring request and start shutdown
*
* @param cls closure (unused)
- * @param tc Task Context
*/
static void
-cleanup_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+cleanup_task (void *cls)
{
if (verbose)
FPRINTF (stderr, "%s", "Cleaning up!\n");
GNUNET_DHT_disconnect (dht_handle);
dht_handle = NULL;
}
+ if (NULL != tt)
+ {
+ GNUNET_SCHEDULER_cancel (tt);
+ tt = NULL;
+ }
+}
+
+
+/**
+ * We hit a timeout. Stop monitoring request and start shutdown
+ *
+ * @param cls closure (unused)
+ */
+static void
+timeout_task (void *cls)
+{
+ tt = NULL;
+ GNUNET_SCHEDULER_shutdown ();
}
+
/**
* Callback called on each GET request going through the DHT.
*
* @param desired_replication_level Desired replication level.
* @param key Key of the requested data.
*/
-void
+static void
get_callback (void *cls,
enum GNUNET_DHT_RouteOption options,
enum GNUNET_BLOCK_Type type,
* @param data Pointer to the result data.
* @param size Number of bytes in data.
*/
-void
+static void
get_resp_callback (void *cls,
enum GNUNET_BLOCK_Type type,
const struct GNUNET_PeerIdentity *get_path,
const void *data,
size_t size)
{
- FPRINTF (stdout,
+ FPRINTF (stdout,
"RESPONSE #%u: type %d, key `%s', data `%.*s'\n",
result_count,
(int) type,
* @param data Pointer to the data carried.
* @param size Number of bytes in data.
*/
-void
+static void
put_callback (void *cls,
enum GNUNET_DHT_RouteOption options,
enum GNUNET_BLOCK_Type type,
const void *data,
size_t size)
{
- FPRINTF (stdout,
+ FPRINTF (stdout,
"PUT %u: type %d, key `%s', data `%.*s'\n",
result_count,
(int) type,
if (NULL == (dht_handle = GNUNET_DHT_connect (cfg, 1)))
{
- FPRINTF (stderr, "%s",
+ FPRINTF (stderr, "%s",
_("Failed to connect to DHT service!\n"));
ret = 1;
return;
}
if (GNUNET_BLOCK_TYPE_ANY == block_type) /* Type of data not set */
block_type = GNUNET_BLOCK_TYPE_TEST;
- if (NULL != query_key)
+ if (NULL != query_key)
{
key = &hc;
if (GNUNET_OK !=
{
key = NULL;
}
- GNUNET_SCHEDULER_add_delayed (timeout_request, &cleanup_task, NULL);
if (verbose)
- FPRINTF (stderr,
- "Monitoring for %s\n",
- GNUNET_TIME_relative_to_string (timeout_request));
- GNUNET_SCHEDULER_add_delayed (timeout, &cleanup_task, NULL);
+ FPRINTF (stderr,
+ "Monitoring for %s\n",
+ GNUNET_STRINGS_relative_time_to_string (timeout_request, GNUNET_NO));
+ tt = GNUNET_SCHEDULER_add_delayed (timeout_request,
+ &timeout_task,
+ NULL);
+ GNUNET_SCHEDULER_add_shutdown (&cleanup_task,
+ NULL);
monitor_handle = GNUNET_DHT_monitor_start (dht_handle,
block_type,
key,