Bindings V1: allows to receive event
authorJosé Bollo <jose.bollo@iot.bzh>
Tue, 30 May 2017 07:57:49 +0000 (09:57 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Tue, 30 May 2017 07:57:49 +0000 (09:57 +0200)
Don't enforce anymore to have the function
'afbBindingV1ServiceInit' defined when expecting
events through 'afbBindingV1ServiceEvent'.

This will allow to handle broadcasted events.

Change-Id: Ib75904487ad99fdc50813deaf6013f4ba4c47421
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-api-so-v1.c
src/afb-svc.c

index f4562ec..f367820 100644 (file)
@@ -96,7 +96,8 @@ static int service_start_cb(void *closure, int share_session, int onneed, struct
 
        /* get the initialisation */
        init = dlsym(desc->handle, afb_api_so_v1_service_init);
-       if (init == NULL) {
+       onevent = dlsym(desc->handle, afb_api_so_v1_service_event);
+       if (init == NULL && onevent == NULL) {
                /* not an error when onneed */
                if (onneed != 0)
                        return 0;
@@ -107,7 +108,6 @@ static int service_start_cb(void *closure, int share_session, int onneed, struct
        }
 
        /* get the event handler if any */
-       onevent = dlsym(desc->handle, afb_api_so_v1_service_event);
        desc->service = afb_svc_create_v1(apiset, share_session, init, onevent);
        if (desc->service == NULL) {
                /* starting error */
index b4032e3..b492520 100644 (file)
@@ -194,9 +194,11 @@ struct afb_svc *afb_svc_create_v1(
        }
 
        /* initialises the svc now */
-       rc = start(to_afb_service(svc));
-       if (rc < 0)
-               goto error;
+       if (start) {
+               rc = start(to_afb_service(svc));
+               if (rc < 0)
+                       goto error;
+       }
 
        return svc;