- GNUNET_assert (success == GNUNET_YES);
-#if START_ARM
- sleep (1); /* FIXME: that we need to do this is a problem... */
-#endif
- GNUNET_ARM_start_service ("resolver",
- cfg, sched, TIMEOUT, &resolver_notify, NULL);
+ if (GNUNET_SYSERR == connected)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Fatal error initializing ARM API.\n"));
+ GNUNET_SCHEDULER_shutdown ();
+ GNUNET_assert (0);
+ return;
+ }
+ if (GNUNET_YES == connected)
+ {
+ /* (1), arm connection should be established */
+ LOG ("Connected to ARM\n");
+ GNUNET_break (phase == 1);
+ phase++;
+ GNUNET_assert (NULL == op);
+ op = GNUNET_ARM_request_service_start (arm,
+ "resolver",
+ GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
+ &resolver_start_cb,
+ NULL);
+ }
+ else
+ {
+ /* (7), ARM should stop (we disconnect from it) */
+ LOG ("Disconnected from ARM\n");
+ GNUNET_break (phase == 7);
+ if (phase != 7)
+ ok = 3;
+ else if (ok == 1)
+ ok = 0;
+ }
+}
+
+
+static void
+arm_start_cb (void *cls,
+ enum GNUNET_ARM_RequestStatus status,
+ enum GNUNET_ARM_Result result)
+{
+ op = NULL;
+ /* (0) The request should be "sent" successfully
+ * ("sent", because it isn't going anywhere, ARM API starts ARM service
+ * by itself).
+ * ARM API should report that ARM service is starting.
+ */
+ GNUNET_break (status == GNUNET_ARM_REQUEST_SENT_OK);
+ GNUNET_break (phase == 0);
+ LOG ("Sent 'START' request for arm to ARM %s\n",
+ (status == GNUNET_ARM_REQUEST_SENT_OK) ? "successfully" : "unsuccessfully");
+ GNUNET_break (result == GNUNET_ARM_RESULT_STARTING);
+ phase++;
+}
+
+
+static void
+do_shutdown (void *cls)
+{
+ if (NULL != op)
+ {
+ GNUNET_ARM_operation_cancel (op);
+ op = NULL;
+ }
+ if (NULL != arm)
+ {
+ GNUNET_ARM_disconnect (arm);
+ arm = NULL;
+ }