diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2019-08-12 17:58:50 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2019-08-13 12:15:21 +0000 |
commit | 08a4337bf62b7b0671c75f8b3d34a803384ec364 (patch) | |
tree | 3cfa00b03143b646cf3e7761d57c075a68d94843 /low-can-binding | |
parent | f846986ed6159030e5ddb3827d9f1c5e2a82742f (diff) |
Fix: only one subscription could be made
Only one subscription could be made and then only one subscriber
could receive associated events. As the relationship between events
and subscriber is not 1-1 but 1-N, so this was the mistake. Now 1 event
is created for N subscriber where before there was 1 event for 1
subscriber and subsequent subscribers could not receive same events
than the ones already subscribed.
Bug-AGL: SPEC-2726
Change-Id: I4e4a80ac9f9b6b4c6b006108ee55f355a7c1e377
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'low-can-binding')
-rw-r--r-- | low-can-binding/binding/low-can-cb.cpp | 3 | ||||
-rw-r--r-- | low-can-binding/binding/low-can-subscription.cpp | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/low-can-binding/binding/low-can-cb.cpp b/low-can-binding/binding/low-can-cb.cpp index 5fdd961e..2b630845 100644 --- a/low-can-binding/binding/low-can-cb.cpp +++ b/low-can-binding/binding/low-can-cb.cpp @@ -151,8 +151,7 @@ static int subscribe_unsubscribe_signal(afb_req_t request, } // Event doesn't exist , so let's create it - if (! subscription_exists && - (ret = can_subscription->subscribe(request)) < 0) + if ((ret = can_subscription->subscribe(request)) < 0) return ret; if(! subscription_exists) diff --git a/low-can-binding/binding/low-can-subscription.cpp b/low-can-binding/binding/low-can-subscription.cpp index bb488887..736e034a 100644 --- a/low-can-binding/binding/low-can-subscription.cpp +++ b/low-can-binding/binding/low-can-subscription.cpp @@ -95,8 +95,13 @@ int low_can_subscription_t::set_event() */ int low_can_subscription_t::subscribe(afb_req_t request) { - if(set_event() < 0) - return -1; + if(! afb_event_is_valid(event_)) + { + if(set_event() < 0) + { + return -1; + } + } return afb_req_subscribe(request, event_); } |