X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_arm_service.h;h=e1f44620f611803fe6f64fcbf612a479ff9de8c7;hb=27c12911f4f2aba2d90099270d70de846e83854f;hp=be46831a416c99a91949565a420c3288a88c10d5;hpb=405f776bc08486af4edb80e18149c0829732b347;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_arm_service.h b/src/include/gnunet_arm_service.h index be46831a4..e1f44620f 100644 --- a/src/include/gnunet_arm_service.h +++ b/src/include/gnunet_arm_service.h @@ -35,10 +35,7 @@ extern "C" #endif #endif -#include "gnunet_configuration_lib.h" -#include "gnunet_scheduler_lib.h" -#include "gnunet_os_lib.h" -#include "gnunet_time_lib.h" +#include "gnunet_util_lib.h" /** * Version of the arm API. @@ -112,6 +109,7 @@ enum GNUNET_ARM_ServiceStatus GNUNET_ARM_SERVICE_STOPPING = 3 }; + /** * Replies to ARM requests */ @@ -179,11 +177,11 @@ struct GNUNET_ARM_Handle; * Function called whenever we connect to or disconnect from ARM. * * @param cls closure - * @param connected GNUNET_YES if connected, GNUNET_NO if disconnected - * @param error GNUNET_YES if we encountered a permanent error, and there - * will be no re-connection. + * @param connected GNUNET_YES if connected, GNUNET_NO if disconnected, + * GNUNET_SYSERR if there was an error. */ -typedef void (*GNUNET_ARM_ConnectionStatusCallback) (void *cls, struct GNUNET_ARM_Handle *arm, unsigned char connected, unsigned char error); +typedef void (*GNUNET_ARM_ConnectionStatusCallback) (void *cls, + int connected); /** @@ -193,12 +191,14 @@ typedef void (*GNUNET_ARM_ConnectionStatusCallback) (void *cls, struct GNUNET_AR * 'rs' will indicate that, and 'service' and 'result' will be undefined. * * @param cls closure - * @param arm handle to the arm connection * @param rs status of the request * @param service service name * @param result result of the operation */ -typedef void (*GNUNET_ARM_ResultCallback) (void *cls, struct GNUNET_ARM_Handle *arm, enum GNUNET_ARM_RequestStatus rs, const char *service, enum GNUNET_ARM_Result result); +typedef void (*GNUNET_ARM_ResultCallback) (void *cls, + enum GNUNET_ARM_RequestStatus rs, + const char *service, + enum GNUNET_ARM_Result result); /** @@ -208,48 +208,40 @@ typedef void (*GNUNET_ARM_ResultCallback) (void *cls, struct GNUNET_ARM_Handle * * 'rs' will indicate that, and 'count' and 'list' will be undefined. * * @param cls closure - * @param arm handle to the arm connection * @param rs status of the request * @param count number of strings in the list * @param list list of running services */ -typedef void (*GNUNET_ARM_ServiceListCallback) (void *cls, struct GNUNET_ARM_Handle *arm, enum GNUNET_ARM_RequestStatus rs, unsigned int count, const char *const*list); +typedef void (*GNUNET_ARM_ServiceListCallback) (void *cls, + enum GNUNET_ARM_RequestStatus rs, + unsigned int count, + const char *const*list); /** - * Setup a context for communicating with ARM. Note that this - * can be done even if the ARM service is not yet running. - * Never fails. + * Set up a context for communicating with ARM, then + * start connecting to the ARM service using that context. * * @param cfg configuration to use (needed to contact ARM; * the ARM service may internally use a different * configuration to determine how to start the service). - * @return context to use for further ARM operations - */ -struct GNUNET_ARM_Handle * -GNUNET_ARM_alloc (const struct GNUNET_CONFIGURATION_Handle *cfg); - -/** - * Start connecting to the ARM service using the context. - * @param conn_status called when we (dis)connect from/to ARM. - * It's also called on connection errors. + * @param conn_status will be called when connecting/disconnecting * @param cls closure for conn_status - * - * @param h ARM handle + * @return context to use for further ARM operations, NULL on error. */ -void -GNUNET_ARM_connect (struct GNUNET_ARM_Handle *h, - GNUNET_ARM_ConnectionStatusCallback conn_status, void *cls); +struct GNUNET_ARM_Handle * +GNUNET_ARM_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, + GNUNET_ARM_ConnectionStatusCallback conn_status, + void *cls); /** * Disconnect from the ARM service and destroy the handle. - * Don't call this from inside an ARM callback! * * @param h the handle that was being used */ void -GNUNET_ARM_disconnect (struct GNUNET_ARM_Handle *h); +GNUNET_ARM_disconnect_and_free (struct GNUNET_ARM_Handle *h); /** @@ -262,8 +254,8 @@ GNUNET_ARM_disconnect (struct GNUNET_ARM_Handle *h); */ void GNUNET_ARM_request_service_list (struct GNUNET_ARM_Handle *h, - struct GNUNET_TIME_Relative timeout, - GNUNET_ARM_ServiceListCallback cont, void *cont_cls); + struct GNUNET_TIME_Relative timeout, + GNUNET_ARM_ServiceListCallback cont, void *cont_cls); /** @@ -271,7 +263,7 @@ GNUNET_ARM_request_service_list (struct GNUNET_ARM_Handle *h, * Stopping arm itself will not invalidate its handle, and * ARM API will try to restore connection to the ARM service, * even if ARM connection was lost because you asked for ARM to be stopped. - * Call GNUNET_ARM_disconnect () to free the handle and prevent + * Call GNUNET_ARM_disconnect_and_free () to free the handle and prevent * further connection attempts. * * @param h handle to ARM @@ -282,8 +274,9 @@ GNUNET_ARM_request_service_list (struct GNUNET_ARM_Handle *h, */ void GNUNET_ARM_request_service_stop (struct GNUNET_ARM_Handle *h, - const char *service_name, struct GNUNET_TIME_Relative timeout, - GNUNET_ARM_ResultCallback cont, void *cont_cls); + const char *service_name, + struct GNUNET_TIME_Relative timeout, + GNUNET_ARM_ResultCallback cont, void *cont_cls); /** @@ -298,9 +291,11 @@ GNUNET_ARM_request_service_stop (struct GNUNET_ARM_Handle *h, */ void GNUNET_ARM_request_service_start (struct GNUNET_ARM_Handle *h, - const char *service_name, enum GNUNET_OS_InheritStdioFlags std_inheritance, - struct GNUNET_TIME_Relative timeout, GNUNET_ARM_ResultCallback cont, - void *cont_cls); + const char *service_name, + enum GNUNET_OS_InheritStdioFlags std_inheritance, + struct GNUNET_TIME_Relative timeout, + GNUNET_ARM_ResultCallback cont, + void *cont_cls); /** @@ -317,42 +312,35 @@ struct GNUNET_ARM_MonitorHandle; * @param service service name * @param status status of the service */ -typedef void (*GNUNET_ARM_ServiceStatusCallback) (void *cls, struct GNUNET_ARM_MonitorHandle *arm, const char *service, enum GNUNET_ARM_ServiceStatus status); +typedef void (*GNUNET_ARM_ServiceStatusCallback) (void *cls, + const char *service, + enum GNUNET_ARM_ServiceStatus status); /** - * Setup a context for monitoring ARM. Note that this - * can be done even if the ARM service is not yet running. - * Never fails. + * Setup a context for monitoring ARM, then + * start connecting to the ARM service for monitoring using that context. * * @param cfg configuration to use (needed to contact ARM; * the ARM service may internally use a different * configuration to determine how to start the service). - * @return context to use for further ARM monitor operations - */ -struct GNUNET_ARM_MonitorHandle * -GNUNET_ARM_monitor_alloc (const struct GNUNET_CONFIGURATION_Handle *cfg); - -/** - * Start connecting to the ARM service for monitoring using the context. - * - * @param h ARM monitor handle * @param cont callback to invoke on status updates * @param cont_cls closure + * @return context to use for further ARM monitor operations, NULL on error. */ -void -GNUNET_ARM_monitor (struct GNUNET_ARM_MonitorHandle *h, - GNUNET_ARM_ServiceStatusCallback cont, void *cont_cls); +struct GNUNET_ARM_MonitorHandle * +GNUNET_ARM_monitor (const struct GNUNET_CONFIGURATION_Handle *cfg, + GNUNET_ARM_ServiceStatusCallback cont, + void *cont_cls); /** * Disconnect from the ARM service and destroy the handle. - * Don't call this from inside an ARM callback! * * @param h the handle that was being used */ void -GNUNET_ARM_monitor_disconnect (struct GNUNET_ARM_MonitorHandle *h); +GNUNET_ARM_monitor_disconnect_and_free (struct GNUNET_ARM_MonitorHandle *h); #if 0 /* keep Emacsens' auto-indent happy */