Adds hooks for service (svc)
[src/app-framework-binder.git] / src / afb-svc.h
index 3069e4a..fb82e3c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 "IoT.bzh"
+ * Copyright (C) 2016, 2017 "IoT.bzh"
  * Author: José Bollo <jose.bollo@iot.bzh>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
 
 struct afb_svc;
 struct afb_service;
+struct afb_session;
+struct afb_apiset;
+struct afb_evt_listener;
+struct afb_binding_data_v2;
 
-extern struct afb_svc *afb_svc_create(int share_session,
-                       int (*init)(struct afb_service service),
-                       void (*onevent)(const char *event, struct json_object *object));
+struct json_object;
+
+/*
+ * Structure for recording service
+ */
+struct afb_svc
+{
+       /* api/prefix */
+       const char *api;
+
+       /* session of the service */
+       struct afb_session *session;
+
+       /* the apiset for the service */
+       struct afb_apiset *apiset;
+
+       /* event listener of the service or NULL */
+       struct afb_evt_listener *listener;
+
+       /* on event callback for the service */
+       void (*on_event)(const char *event, struct json_object *object);
+
+       /* hooking flags */
+       int hookflags;
+};
+
+extern struct afb_svc *afb_svc_create_v1(
+                       const char *api,
+                       struct afb_apiset *apiset,
+                       int share_session,
+                       int (*start)(struct afb_service service),
+                       void (*on_event)(const char *event, struct json_object *object));
+
+extern struct afb_svc *afb_svc_create_v2(
+                       const char *api,
+                       struct afb_apiset *apiset,
+                       int share_session,
+                       int (*start)(),
+                       void (*on_event)(const char *event, struct json_object *object),
+                       struct afb_binding_data_v2 *data);
+
+extern void afb_svc_update_hook(struct afb_svc *svc);