+typedef struct queryHandleT {
+ char *msg;
+ size_t idx;
+ size_t len;
+} queryHandleT;
+
+static int getQueryCB (queryHandleT *query, struct afb_arg arg) {
+ if (query->idx >= query->len)
+ return 0;
+ query->idx += (unsigned)snprintf (&query->msg[query->idx], query->len-query->idx, " %s: %s\'%s\',", arg.name, arg.is_file?"FILE=":"", arg.value);
+ return 1; /* continue to iterate */
+}
+
+// Helper to retrieve argument from connection
+static size_t getQueryAll(struct afb_req request, char *buffer, size_t len) {
+ queryHandleT query;
+ buffer[0] = '\0'; // start with an empty string
+ query.msg = buffer;
+ query.len = len;
+ query.idx = 0;
+
+ afb_req_iterate(request, (void*)getQueryCB, &query);
+ buffer[len-1] = 0;
+ return query.idx >= len ? len - 1 : query.idx;
+}
+
+static void ping (struct afb_req request, json_object *jresp)
+{