14 #ifndef BEHAVIORTREECORE_ACTIONNODE_H 15 #define BEHAVIORTREECORE_ACTIONNODE_H 63 virtual void halt() override final
95 TickFunctor tick_functor_;
115 void stopAndJoinThread();
120 void asyncThreadLoop();
155 void setStatusRunningAndYield();
171 void halt()
override;
176 std::unique_ptr<Pimpl>
_p;
The ActionNodeBase is the base class to use to create any kind of action. A particular derived class ...
const std::string & name() const
Name of the instance, not the type.
const NodeConfiguration & config() const
static pthread_mutex_t mutex
The AsyncActionNode uses a different thread where the action will be executed.
virtual NodeType type() const overridefinal
The CoroActionNode class is an ideal candidate for asynchronous actions which need to communicate wit...
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
~ActionNodeBase() override=default
std::unique_ptr< Pimpl > _p
std::atomic< bool > keep_thread_alive_
virtual void halt() overridefinal
You don't need to override this.
std::function< NodeStatus(TreeNode &)> TickFunctor
The SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callbac...
std::condition_variable start_signal_
ActionNodeBase(const std::string &name, const NodeConfiguration &config)
std::exception_ptr exptr_
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
NodeType
Enumerates the possible types of nodes.
virtual BT::NodeStatus tick()=0
Method to be implemented by the user.
void setStatus(NodeStatus new_status)