From 5eb5e2f01a19adbc5b7b9cf6872d23ddcfa3b942 Mon Sep 17 00:00:00 2001 From: sukhrajklair <38185092+sukhrajklair@users.noreply.github.com> Date: Sat, 22 Jun 2024 19:32:06 -0400 Subject: [PATCH] added cb to deactivate a lifecycle node on exit (#546) Co-authored-by: Sukhraj Klair --- .../lifecyclenode_client/client_behaviors.hpp | 1 + .../cb_deactivate_on_exit.hpp | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors/cb_deactivate_on_exit.hpp diff --git a/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors.hpp b/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors.hpp index 4a302575a..e23d7e123 100644 --- a/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors.hpp +++ b/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors.hpp @@ -23,4 +23,5 @@ #include #include #include +#include #include diff --git a/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors/cb_deactivate_on_exit.hpp b/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors/cb_deactivate_on_exit.hpp new file mode 100644 index 000000000..48a939371 --- /dev/null +++ b/smacc2_client_library/lifecyclenode_client/include/lifecyclenode_client/client_behaviors/cb_deactivate_on_exit.hpp @@ -0,0 +1,54 @@ +// Copyright 2021 RobosoftAI Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/***************************************************************************************************************** + * + * Authors: Pablo Inigo Blasco, Brett Aldrich + * + ******************************************************************************************************************/ + +#pragma once + +#include +#include + +namespace cl_lifecyclenode +{ +class CbDeactivateOnExit : public smacc2::SmaccAsyncClientBehavior +{ +public: + CbDeactivateOnExit() {} + virtual ~CbDeactivateOnExit() {} + + template + void onOrthogonalAllocation() + { + smacc2::SmaccAsyncClientBehavior::onOrthogonalAllocation(); + + this->requiresClient(this->lifecycleNodeClient_); + + lifecycleNodeClient_->onTransitionOnDeactivateSuccess_.connect([this]() + { this->postSuccessEvent(); }); + lifecycleNodeClient_->onTransitionOnDeactivateFailure_.connect([this]() + { this->postFailureEvent(); }); + lifecycleNodeClient_->onTransitionOnDeactivateError_.connect([this]() + { this->postFailureEvent(); }); + } + + virtual void onExit() override { lifecycleNodeClient_->deactivate(); } + +private: + ClLifecycleNode * lifecycleNodeClient_; +}; +} // namespace cl_lifecyclenode