.. _program_listing_file__tmp_ws_src_rmf_task_rmf_task_sequence_include_rmf_task_sequence_Event.hpp: Program Listing for File Event.hpp ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/rmf_task/rmf_task_sequence/include/rmf_task_sequence/Event.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright (C) 2021 Open Source Robotics Foundation * * 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. * */ #ifndef RMF_TASK_SEQUENCE__EVENT_HPP #define RMF_TASK_SEQUENCE__EVENT_HPP #include #include #include #include #include #include #include namespace rmf_task_sequence { //============================================================================== class Event : public rmf_task::Event { public: // Event::Active simply uses the Activity::Active API class Active; using ActivePtr = std::shared_ptr; // Event::Description simply uses the Activity::Description API using Description = Activity::Description; using ConstDescriptionPtr = std::shared_ptr; class Standby; using StandbyPtr = std::shared_ptr; class Initializer; using InitializerPtr = std::shared_ptr; using ConstInitializerPtr = std::shared_ptr; }; //============================================================================== class Event::Standby { public: virtual ConstStatePtr state() const = 0; virtual rmf_traffic::Duration duration_estimate() const = 0; virtual ActivePtr begin( std::function checkpoint, std::function finished) = 0; // Virtual destructor virtual ~Standby() = default; }; //============================================================================== class Event::Active : public Activity::Active { public: virtual ConstStatePtr state() const = 0; virtual rmf_traffic::Duration remaining_time_estimate() const = 0; // Virtual destructor virtual ~Active() = default; }; //============================================================================== class Event::Initializer { public: Initializer(); template using Initialize = std::function< StandbyPtr( const AssignIDPtr& id, const std::function& get_state, const ConstParametersPtr& parameters, const Description& description, std::function update) >; template using Restore = std::function< ActivePtr( const AssignIDPtr& id, const std::function& get_state, const ConstParametersPtr& parameters, const Description& description, const nlohmann::json& backup_state, std::function update, std::function checkpoint, std::function finished) >; template void add( Initialize initializer, Restore restorer); StandbyPtr initialize( const AssignIDPtr& id, const std::function& get_state, const ConstParametersPtr& parameters, const Event::Description& description, std::function update) const; ActivePtr restore( const AssignIDPtr& id, const std::function& get_state, const ConstParametersPtr& parameters, const Event::Description& description, const nlohmann::json& backup, std::function update, std::function checkpoint, std::function finished) const; class Implementation; private: void _add( std::type_index type, Initialize initializer, Restore restorer); rmf_utils::impl_ptr _pimpl; }; } // namespace rmf_task_sequence #include #endif // RMF_TASK_SEQUENCE__EVENT_HPP