+ * Statuses of the requests that client can send to ARM.
+ */
+enum GNUNET_ARM_RequestStatus
+{
+ /**
+ * Message was sent successfully.
+ */
+ GNUNET_ARM_REQUEST_SENT_OK = 0,
+
+ /**
+ * Misconfiguration (can't connect to the ARM service).
+ */
+ GNUNET_ARM_REQUEST_CONFIGURATION_ERROR = 1,
+
+ /**
+ * We disconnected from ARM, and request was not sent.
+ */
+ GNUNET_ARM_REQUEST_DISCONNECTED = 2,
+
+ /**
+ * ARM API is busy (probably trying to connect to ARM),
+ * and request was not sent. Try again later.
+ */
+ GNUNET_ARM_REQUEST_BUSY = 3,
+
+ /**
+ * It was discovered that the request would be too long to fit in a message,
+ * and thus it was not sent.
+ */
+ GNUNET_ARM_REQUEST_TOO_LONG = 4,
+
+ /**
+ * Request time ran out before we had a chance to send it.
+ */
+ GNUNET_ARM_REQUEST_TIMEOUT = 5
+
+};
+
+
+/**
+ * Statuses of services.
+ */
+enum GNUNET_ARM_ServiceStatus
+{
+ /**
+ * Dummy message.
+ */
+ GNUNET_ARM_SERVICE_MONITORING_STARTED = 0,
+
+ /**
+ * Service was stopped.
+ */
+ GNUNET_ARM_SERVICE_STOPPED = 1,
+
+ /**
+ * Service starting was initiated
+ */
+ GNUNET_ARM_SERVICE_STARTING = 2,
+
+ /**
+ * Service stopping was initiated
+ */
+ GNUNET_ARM_SERVICE_STOPPING = 3
+};
+
+
+/**
+ * Replies to ARM requests
+ */
+enum GNUNET_ARM_Result
+{
+ /**
+ * Service was stopped (never sent for ARM itself).
+ */
+ GNUNET_ARM_RESULT_STOPPED = 0,
+
+ /**
+ * ARM stopping was initiated (there's no "stopped" for ARM itself).
+ */
+ GNUNET_ARM_RESULT_STOPPING = 1,
+
+ /**
+ * Service starting was initiated
+ */
+ GNUNET_ARM_RESULT_STARTING = 2,
+
+ /**
+ * Asked to start it, but it's already starting.
+ */
+ GNUNET_ARM_RESULT_IS_STARTING_ALREADY = 3,
+
+ /**
+ * Asked to stop it, but it's already stopping.
+ */
+ GNUNET_ARM_RESULT_IS_STOPPING_ALREADY = 4,
+
+ /**
+ * Asked to start it, but it's already started.
+ */
+ GNUNET_ARM_RESULT_IS_STARTED_ALREADY = 5,
+
+ /**
+ * Asked to stop it, but it's already stopped.
+ */
+ GNUNET_ARM_RESULT_IS_STOPPED_ALREADY = 6,
+
+ /**
+ * Asked to start or stop a service, but it's not known.
+ */
+ GNUNET_ARM_RESULT_IS_NOT_KNOWN = 7,
+
+ /**
+ * Tried to start a service, but that failed for some reason.
+ */
+ GNUNET_ARM_RESULT_START_FAILED = 8,
+
+ /**
+ * Asked to start something, but ARM is shutting down and can't comply.
+ */
+ GNUNET_ARM_RESULT_IN_SHUTDOWN = 9
+};
+
+
+/**
+ * Handle for interacting with ARM.
+ */
+struct GNUNET_ARM_Handle;
+
+
+/**
+ * Function called whenever we connect to or disconnect from ARM.