From 644318fecd112a60f364348c83aeac8a7db12aae Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Sun, 16 Sep 2018 02:40:39 +0200 Subject: More accurate (un)subscribe answer Answer a failure when attempting to subscibe a non-existent signal but don't report error on unsubscription. Change-Id: Iac4bfe52ce84b47fbfa5717cd9ee2bf02231f52f Signed-off-by: Romain Forlot --- signal-composer-binding/signal-composer-binding.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/signal-composer-binding/signal-composer-binding.cpp b/signal-composer-binding/signal-composer-binding.cpp index 310cb40..7d3391b 100644 --- a/signal-composer-binding/signal-composer-binding.cpp +++ b/signal-composer-binding/signal-composer-binding.cpp @@ -83,15 +83,22 @@ static int one_subscribe_unsubscribe(struct afb_req request, int err = 0; std::vector> signals = Composer::instance().searchSignals(event); - if(subscribe) + if(signals.size() == 0 && subscribe) { - cContext->appendSignals(signals); - err = cContext->makeSubscription(request); + err--; } else { - cContext->subtractSignals(signals); - err = cContext->makeUnsubscription(request); + if(subscribe) + { + cContext->appendSignals(signals); + err = cContext->makeSubscription(request); + } + else + { + cContext->subtractSignals(signals); + err = cContext->makeUnsubscription(request); + } } return err; -- cgit 1.2.3-korg