aboutsummaryrefslogtreecommitdiffstats
path: root/src/afm-user-daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/afm-user-daemon.c')
-rw-r--r--src/afm-user-daemon.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/afm-user-daemon.c b/src/afm-user-daemon.c
index 324e9a8..14977b0 100644
--- a/src/afm-user-daemon.c
+++ b/src/afm-user-daemon.c
@@ -113,14 +113,23 @@ static const char *uri;
*
*/
static void on_pws_hangup(void *closure);
-static void on_pws_reply_success(void *closure, void *request, struct json_object *result, const char *info);
-static void on_pws_reply_fail(void *closure, void *request, const char *status, const char *info);
+static void on_pws_reply(void *closure, void *request, struct json_object *obj, const char *error, const char *info);
+#if !defined(AFB_PROTO_WS_VERSION) || (AFB_PROTO_WS_VERSION < 3)
+static void on_pws_reply_success(void *closure, void *request, struct json_object *result, const char *info)
+ { on_pws_reply(closure, request, result, NULL, info); }
+static void on_pws_reply_fail(void *closure, void *request, const char *error, const char *info)
+ { on_pws_reply(closure, request, NULL, error, info); }
+#endif
static void on_pws_event_broadcast(void *closure, const char *event_name, struct json_object *data);
/* the callback interface for pws */
static struct afb_proto_ws_client_itf pws_itf = {
+#if !defined(AFB_PROTO_WS_VERSION) || (AFB_PROTO_WS_VERSION < 3)
.on_reply_success = on_pws_reply_success,
.on_reply_fail = on_pws_reply_fail,
+#else
+ .on_reply = on_pws_reply,
+#endif
.on_event_broadcast = on_pws_event_broadcast,
};
@@ -156,16 +165,13 @@ static void attempt_connect_pws(int count)
}
}
-static void on_pws_reply_success(void *closure, void *request, struct json_object *result, const char *info)
-{
- struct sd_bus_message *smsg = request;
- jbus_reply_j(smsg, result);
-}
-
-static void on_pws_reply_fail(void *closure, void *request, const char *status, const char *info)
+static void on_pws_reply(void *closure, void *request, struct json_object *obj, const char *error, const char *info)
{
struct sd_bus_message *smsg = request;
- jbus_reply_error_s(smsg, status);
+ if (error)
+ jbus_reply_error_s(smsg, error);
+ else
+ jbus_reply_j(smsg, obj);
}
static void on_pws_event_broadcast(void *closure, const char *event_name, struct json_object *data)
@@ -187,12 +193,17 @@ static void propagate(struct sd_bus_message *smsg, struct json_object *obj, void
{
int rc;
const char *verb = closure;
+ const char *onbehalf = NULL; /* TODO: on behalf of the client */
INFO("method %s propagated for %s", verb, json_object_to_json_string(obj));
if (!pws)
jbus_reply_error_s(smsg, "disconnected");
else {
+#if defined(AFB_PROTO_WS_VERSION) && (AFB_PROTO_WS_VERSION >= 3)
+ rc = afb_proto_ws_client_call(pws, verb, obj, sessionid, smsg, onbehalf);
+#else
rc = afb_proto_ws_client_call(pws, verb, obj, sessionid, smsg);
+#endif
if (rc < 0)
ERROR("calling %s(%s) failed: %m\n", verb, json_object_to_json_string(obj));
}