aboutsummaryrefslogtreecommitdiff
path: root/src/include/gnunet_service_lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/gnunet_service_lib.h')
-rw-r--r--src/include/gnunet_service_lib.h36
1 files changed, 33 insertions, 3 deletions
diff --git a/src/include/gnunet_service_lib.h b/src/include/gnunet_service_lib.h
index 797857ed85..9c7009ef49 100644
--- a/src/include/gnunet_service_lib.h
+++ b/src/include/gnunet_service_lib.h
@@ -336,16 +336,36 @@ GNUNET_SERVICE_ruN_ (int argc,
* @param connect_cb function to call whenever a client connects
* @param disconnect_cb function to call whenever a client disconnects
* @param cls closure argument for @a service_init_cb, @a connect_cb and @a disconnect_cb
- * @param handlers NULL-terminated array of message handlers for the service,
+ * @param ... array of message handlers for the service, terminated
+ * by #GNUNET_MQ_handler_end();
* the closure will be set to the value returned by
* the @a connect_cb for the respective connection
* @return 0 on success, non-zero on error
+ *
+ * Sample invocation:
+ * <code>
+ * GNUNET_SERVICE_MAIN
+ * ("resolver",
+ * GNUNET_SERVICE_OPTION_NONE,
+ * &init_cb,
+ * &connect_cb,
+ * &disconnect_cb,
+ * closure_for_cb,
+ * GNUNET_MQ_hd_var_size (get,
+ * GNUNET_MESSAGE_TYPE_RESOLVER_REQUEST,
+ * struct GNUNET_RESOLVER_GetMessage,
+ * NULL),
+ * GNUNET_MQ_handler_end ());
+ * </code>
*/
-#define GNUNET_SERVICE_MAIN(service_name,service_options,init_cb,connect_cb,disconnect_cb,cls,handlers) \
+#define GNUNET_SERVICE_MAIN(service_name,service_options,init_cb,connect_cb,disconnect_cb,cls,...) \
int \
main (int argc,\
char *const *argv)\
{ \
+ struct GNUNET_MQ_MessageHandler mh[] = { \
+ __VA_ARGS__ \
+ }; \
return GNUNET_SERVICE_ruN_ (argc, \
argv, \
service_name, \
@@ -354,7 +374,7 @@ GNUNET_SERVICE_ruN_ (int argc,
connect_cb, \
disconnect_cb, \
cls, \
- handlers); \
+ mh); \
}
@@ -388,6 +408,16 @@ GNUNET_SERVICE_client_continue (struct GNUNET_SERVICE_Client *c);
/**
+ * Obtain the message queue of @a c. Convenience function.
+ *
+ * @param c the client to continue receiving from
+ * @return the message queue of @a c
+ */
+struct GNUNET_MQ_Handle *
+GNUNET_SERVICE_client_get_mq (struct GNUNET_SERVICE_Client *c);
+
+
+/**
* Disable the warning the server issues if a message is not
* acknowledged in a timely fashion. Use this call if a client is
* intentionally delayed for a while. Only applies to the current