/*
This file is part of GNUnet.
- (C) 2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2013 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 conversation/test_conversation_api_twocalls.c
static void *phone_rdc_cls;
-static GNUNET_SCHEDULER_TaskIdentifier phone_task;
+static struct GNUNET_SCHEDULER_Task *phone_task;
+
+static struct GNUNET_SCHEDULER_Task *timeout_task;
/**
* Variable for recognizing caller1
void *rdc_cls;
- GNUNET_SCHEDULER_TaskIdentifier call_task;
+ struct GNUNET_SCHEDULER_Task * call_task;
};
static void
-phone_send (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+phone_send (void *cls)
{
char buf[32];
static void
-call_send (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+call_send (void *cls)
{
struct MicContext *mc = cls;
char buf[32];
phone_i++;
else
{
- LOG_DEBUG ("Received unexpected data %.*s\n",
+ LOG_DEBUG ("Received %u bytes of unexpected data `%.*s'\n",
+ (unsigned int) data_size,
(int) data_size,
(const char *) data);
}
{
phone_rdc = rdc;
phone_rdc_cls = rdc_cls;
- GNUNET_break (GNUNET_SCHEDULER_NO_TASK == phone_task);
+ GNUNET_break (NULL == phone_task);
phone_task = GNUNET_SCHEDULER_add_now (&phone_send, NULL);
return GNUNET_OK;
}
mc = (CALLER1 == cls) ? &call1_mic_ctx : &call2_mic_ctx;
mc->rdc = rdc;
mc->rdc_cls = rdc_cls;
- GNUNET_break (GNUNET_SCHEDULER_NO_TASK == mc->call_task);
+ GNUNET_break (NULL == mc->call_task);
mc->call_task = GNUNET_SCHEDULER_add_now (&call_send, mc);
return GNUNET_OK;
}
phone_rdc = NULL;
phone_rdc_cls = NULL;
GNUNET_SCHEDULER_cancel (phone_task);
- phone_task = GNUNET_SCHEDULER_NO_TASK;
+ phone_task = NULL;
return;
}
mc = (CALLER1 == cls) ? &call1_mic_ctx : &call2_mic_ctx;
mc->rdc = NULL;
mc->rdc_cls = NULL;
GNUNET_SCHEDULER_cancel (mc->call_task);
- mc->call_task = GNUNET_SCHEDULER_NO_TASK;
+ mc->call_task = NULL;
}
/**
- * Signature of the main function of a task.
+ * Function run on timeout.
*
* @param cls closure
- * @param tc context information (why was this task triggered now)
*/
static void
-end_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+end_test (void *cls)
{
+ timeout_task = NULL;
+ fprintf (stderr,
+ "Timeout!\n");
GNUNET_SCHEDULER_shutdown ();
+}
+
+
+/**
+ * Function run on shutdown.
+ *
+ * @param cls closure
+ */
+static void
+do_shutdown (void *cls)
+{
+ if (NULL != timeout_task)
+ {
+ GNUNET_SCHEDULER_cancel (timeout_task);
+ timeout_task = NULL;
+ }
if (NULL != op)
{
GNUNET_IDENTITY_cancel (op);
break;
case GNUNET_CONVERSATION_EC_CALL_GNS_FAIL:
LOG_DEBUG ("Call %s GNS lookup failed \n", cid);
+ break;
case GNUNET_CONVERSATION_EC_CALL_HUNG_UP:
LOG_DEBUG ("Call %s hungup\n", cid);
if (0 == strcmp (cid, "call1"))
break;
case GNUNET_CONVERSATION_EC_CALL_ERROR:
GNUNET_break (0);
+ if (0 == strcmp (cid, "call1"))
+ call1 = NULL;
+ else
+ call2 = NULL;
+ GNUNET_SCHEDULER_shutdown ();
break;
}
}
struct GNUNET_TESTING_Peer *peer)
{
cfg = c;
- GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_test,
- NULL);
+ timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
+ &end_test,
+ NULL);
+ GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
+ NULL);
id = GNUNET_IDENTITY_connect (cfg,
&identity_cb,
NULL);