/*
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,
* @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,
FPRINTF (stderr,
"Monitoring for %s\n",
GNUNET_STRINGS_relative_time_to_string (timeout_request, GNUNET_NO));
- GNUNET_SCHEDULER_add_delayed (timeout_request, &cleanup_task, NULL);
+ 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,