X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdht%2Fgnunet-dht-put.c;h=1f3df1d351856fa173254024772bef88f754cc9a;hb=5b32752cd7b02adcb8e6fec7798637638c6f63a0;hp=155e1f7d33136c50adbbc13f5a21c8ca7144585d;hpb=6c471eeb15e27f8226492b4860a3c2acb94c5f25;p=oweals%2Fgnunet.git diff --git a/src/dht/gnunet-dht-put.c b/src/dht/gnunet-dht-put.c index 155e1f7d3..1f3df1d35 100644 --- a/src/dht/gnunet-dht-put.c +++ b/src/dht/gnunet-dht-put.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2001, 2002, 2004, 2005, 2006, 2007, 2009 Christian Grothoff (and other contributing authors) + Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007, 2009 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 @@ -14,8 +14,8 @@ 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-put.c @@ -32,14 +32,14 @@ static unsigned int query_type; /** - * The key for the query + * The key used in the DHT */ -static char *query_key; +struct GNUNET_HashCode key; /** - * User supplied timeout value + * The key for the query */ -static unsigned long long timeout_request = 5; +static char *query_key; /** * User supplied expiration value @@ -56,6 +56,11 @@ static unsigned int replication = 5; */ static int verbose; +/** + * Use DHT demultixplex_everywhere + */ +static int demultixplex_everywhere; + /** * Handle to the DHT */ @@ -77,8 +82,9 @@ static int ret; */ static char *data; + static void -shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +shutdown_task (void *cls) { if (NULL != dht_handle) { @@ -87,13 +93,14 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) } } + /** * Signature of the main function of a task. * * @param cls closure - * @param success GNUNET_OK if the PUT was transmitted, - * GNUNET_NO on timeout, - * GNUNET_SYSERR on disconnect from service + * @param success #GNUNET_OK if the PUT was transmitted, + * #GNUNET_NO on timeout, + * #GNUNET_SYSERR on disconnect from service * after the PUT message was transmitted * (so we don't know if it was received or not) */ @@ -105,7 +112,7 @@ message_sent_cont (void *cls, int success) switch (success) { case GNUNET_OK: - FPRINTF (stderr, "%s", _("PUT request sent!\n")); + FPRINTF (stderr, "%s `%s'!\n", _("PUT request sent with key"), GNUNET_h2s_full(&key)); break; case GNUNET_NO: FPRINTF (stderr, "%s", _("Timeout sending PUT request!\n")); @@ -121,6 +128,7 @@ message_sent_cont (void *cls, int success) GNUNET_SCHEDULER_add_now (&shutdown_task, NULL); } + /** * Main function that will be run by the scheduler. * @@ -130,51 +138,49 @@ message_sent_cont (void *cls, int success) * @param c configuration */ static void -run (void *cls, char *const *args, const char *cfgfile, +run (void *cls, + char *const *args, + const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c) { - struct GNUNET_TIME_Relative timeout; struct GNUNET_TIME_Absolute expiration; - struct GNUNET_HashCode key; cfg = c; - - if ((query_key == NULL) || (data == NULL)) + if ((NULL == query_key) || (NULL == data)) { FPRINTF (stderr, "%s", _("Must provide KEY and DATA for DHT put!\n")); ret = 1; return; } - dht_handle = GNUNET_DHT_connect (cfg, 1); - if (dht_handle == NULL) + if (NULL == (dht_handle = GNUNET_DHT_connect (cfg, 1))) { FPRINTF (stderr, _("Could not connect to %s service!\n"), "DHT"); ret = 1; return; } - else if (verbose) - FPRINTF (stderr, _("Connected to %s service!\n"), "DHT"); - - if (query_type == GNUNET_BLOCK_TYPE_ANY) /* Type of data not set */ + if (GNUNET_BLOCK_TYPE_ANY == query_type) /* Type of data not set */ query_type = GNUNET_BLOCK_TYPE_TEST; GNUNET_CRYPTO_hash (query_key, strlen (query_key), &key); - timeout = - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, timeout_request); expiration = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, expiration_seconds)); - if (verbose) FPRINTF (stderr, _("Issuing put request for `%s' with data `%s'!\n"), query_key, data); - GNUNET_DHT_put (dht_handle, &key, replication, GNUNET_DHT_RO_NONE, query_type, - strlen (data), data, expiration, timeout, &message_sent_cont, + GNUNET_DHT_put (dht_handle, + &key, + replication, + (demultixplex_everywhere) ? GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE : GNUNET_DHT_RO_NONE, + query_type, + strlen (data), + data, + expiration, + &message_sent_cont, NULL); - } @@ -191,15 +197,15 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { {'k', "key", "KEY", gettext_noop ("the query key"), 1, &GNUNET_GETOPT_set_string, &query_key}, + {'x', "demultiplex", NULL, + gettext_noop ("use DHT's demultiplex everywhere option"), + 0, &GNUNET_GETOPT_set_one, &demultixplex_everywhere}, {'r', "replication", "LEVEL", gettext_noop ("how many replicas to create"), 1, &GNUNET_GETOPT_set_uint, &replication}, {'t', "type", "TYPE", gettext_noop ("the type to insert data as"), 1, &GNUNET_GETOPT_set_uint, &query_type}, - {'T', "timeout", "TIMEOUT", - gettext_noop ("how long to execute this query before giving up?"), - 1, &GNUNET_GETOPT_set_ulong, &timeout_request}, {'V', "verbose", NULL, gettext_noop ("be verbose (print progress information)"), 0, &GNUNET_GETOPT_set_one, &verbose}, @@ -217,9 +223,9 @@ static struct GNUNET_GETOPT_CommandLineOption options[] = { int main (int argc, char *const *argv) { - if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) + if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, + &argc, &argv)) return 2; - return (GNUNET_OK == GNUNET_PROGRAM_run (argc, argv, "gnunet-dht-put", gettext_noop