diff --git a/.github/workflows/ci-format.yml b/.github/workflows/ci-format.yml index da31e1cb8..c6e45f19d 100644 --- a/.github/workflows/ci-format.yml +++ b/.github/workflows/ci-format.yml @@ -17,10 +17,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Install clang-format-12 + - name: Install clang-format run: | apt update - apt install -y python3-pip clang-format-12 ros-humble-ament-cppcheck + apt install -y python3-pip clang-format ros-humble-ament-cppcheck git config --global --add safe.directory `pwd` pip install pre-commit - name: pre-commit diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 31c6e1b5f..cb0b072df 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -63,7 +63,7 @@ repos: - id: clang-format name: clang-format description: Format files with ClangFormat. - entry: clang-format-12 + entry: clang-format language: system files: \.(c|cc|cxx|cpp|frag|glsl|h|hpp|hxx|ih|ispc|ipp|java|js|m|proto|vert)$ args: ['-fallback-style=none', '-i'] 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