From 8555bb63efa1a6021b7553e013c149b5c4ca6025 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Fri, 16 Apr 2021 18:57:25 -0700 Subject: [PATCH] client cancel() w/ tryCall() Fail soft if worker thread has already stopped. --- src/clientget.cpp | 4 ++-- src/clientintrospect.cpp | 2 +- src/clientmon.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/clientget.cpp b/src/clientget.cpp index 682ff78..d037974 100644 --- a/src/clientget.cpp +++ b/src/clientget.cpp @@ -172,8 +172,8 @@ struct GPROp : public OperationBase { decltype (done) junk; decltype (onInit) junkI; - bool ret; - loop.call([this, &junk, &junkI, &ret](){ + bool ret = false; + (void)loop.tryCall([this, &junk, &junkI, &ret](){ ret = _cancel(false); junk = std::move(done); junkI = std::move(onInit); diff --git a/src/clientintrospect.cpp b/src/clientintrospect.cpp index ae2e48b..9f713a8 100644 --- a/src/clientintrospect.cpp +++ b/src/clientintrospect.cpp @@ -43,7 +43,7 @@ struct InfoOp : public OperationBase virtual bool cancel() override final { decltype (done) junk; bool ret = false; - loop.call([this, &junk, &ret](){ + (void)loop.tryCall([this, &junk, &ret](){ ret = _cancel(false); junk = std::move(done); // leave opByIOID for GC diff --git a/src/clientmon.cpp b/src/clientmon.cpp index f4e82bb..b76ce6b 100644 --- a/src/clientmon.cpp +++ b/src/clientmon.cpp @@ -187,8 +187,8 @@ struct SubscriptionImpl : public OperationBase, public Subscription virtual bool cancel() override final { decltype (event) junk; - bool ret; - loop.call([this, &junk, &ret](){ + bool ret = false; + (void)loop.tryCall([this, &junk, &ret](){ ret = _cancel(false); junk = std::move(event); // leave opByIOID for GC