add handshake
[apps/agl-service-homescreen.git] / src / hs-proxy.cpp
index 967c1b1..1a237d7 100644 (file)
@@ -37,6 +37,9 @@ static const char _event[] = "event";
 static void api_callback(void *closure, struct json_object *object, const char *error, const char *info, afb_api_t api)
 {
     AFB_INFO("asynchronous call, error=%s, info=%s, object=%s.", error, info, json_object_get_string(object));
+    if(closure != nullptr) {
+        reinterpret_cast<api_cb_func>(closure)(object, error, info);
+    }
 }
 
 /**
@@ -52,10 +55,10 @@ static void api_callback(void *closure, struct json_object *object, const char *
  *  None
  *
  */
-static void api_call(afb_api_t api, const char *service, const char *verb, struct json_object *args)
+static void api_call(afb_api_t api, const char *service, const char *verb, struct json_object *args, api_cb_func f = nullptr)
 {
     AFB_INFO("service=%s verb=%s, args=%s.", service, verb, json_object_get_string(args));
-    afb_api_call(api, service, verb, args, api_callback, nullptr);
+    afb_api_call(api, service, verb, args, api_callback, (void*)f);
 }
 
 /**
@@ -144,14 +147,15 @@ void HS_AfmMainProxy::start(afb_req_t request, const std::string &id)
  * #### Parameters
  *  - api : the api serving the request
  *  - event : windowmanager event
+ *  - f : callback function
  *
  * #### Return
  *  None
  *
  */
-void HS_WmProxy::subscribe(afb_api_t api, EventType event)
+void HS_WmProxy::subscribe(afb_api_t api, EventType event, api_cb_func f)
 {
     struct json_object* push_obj = json_object_new_object();
     json_object_object_add(push_obj, _event, json_object_new_int(event));
-    api_call(api, _windowmanager, "wm_subscribe", push_obj);
+    api_call(api, _windowmanager, "wm_subscribe", push_obj, f);
 }