/*
- * Copyright (C) 2016 "IoT.bzh"
+ * Copyright (C) 2016, 2017, 2018 "IoT.bzh"
* Author: José Bollo <jose.bollo@iot.bzh>
*
* Licensed under the Apache License, Version 2.0 (the "License");
/* avoid inclusion of <json-c/json.h> */
struct json_object;
+/*
+ * Interface for internal of services
+ * It records the functions to be called for the request.
+ * Don't use this structure directly.
+ * Use the helper functions documented below.
+ */
struct afb_service_itf
{
- void (*call)(void *closure, const char *api, const char *verb, struct json_object *args, void (*callback)(void*, int, struct json_object*), void *callback_closure);
+ /* CAUTION: respect the order, add at the end */
+
+ void (*call)(void *closure, const char *api, const char *verb, struct json_object *args,
+ void (*callback)(void*, int, struct json_object*), void *callback_closure);
+
+ int (*call_sync)(void *closure, const char *api, const char *verb, struct json_object *args,
+ struct json_object **result);
};
+/*
+ * Object that encapsulate accesses to service items
+ */
struct afb_service
{
const struct afb_service_itf *itf;
void *closure;
};
-extern int pluginAfbV1ServiceInit(struct afb_service service);
-
-extern void pluginAfbV1ServiceEvent(const char *event, struct json_object *object);
-
-static inline void afb_service_call(struct afb_service service, const char *api, const char *verb, struct json_object *args, void (*callback)(void*, int, struct json_object*), void *callback_closure)
-{
- service.itf->call(service.closure, api, verb, args, callback, callback_closure);
-}
-