The ActionNode is the prefered way to implement asynchronous Actions. It is actually easier to use correctly, when compared with AsyncAction. More...
#include <action_node.h>
Public Member Functions | |
void | halt () override final |
virtual void | onHalted ()=0 |
virtual NodeStatus | onRunning ()=0 |
method invoked by a RUNNING action. More... | |
virtual NodeStatus | onStart ()=0 |
StatefulActionNode (const std::string &name, const NodeConfiguration &config) | |
NodeStatus | tick () override final |
Method to be implemented by the user. More... | |
![]() | |
ActionNodeBase (const std::string &name, const NodeConfiguration &config) | |
virtual NodeType | type () const override final |
~ActionNodeBase () override=default | |
![]() | |
LeafNode (const std::string &name, const NodeConfiguration &config) | |
virtual | ~LeafNode () override=default |
![]() | |
const NodeConfiguration & | config () const |
void | emitStateChanged () |
virtual BT::NodeStatus | executeTick () |
The method that should be used to invoke tick() and setStatus();. More... | |
template<typename T > | |
Optional< T > | getInput (const std::string &key) const |
template<typename T > | |
Result | getInput (const std::string &key, T &destination) const |
StringView | getRawPortValue (const std::string &key) const |
bool | isHalted () const |
const std::string & | name () const |
Name of the instance, not the type. More... | |
const std::string & | registrationName () const |
registrationName is the ID used by BehaviorTreeFactory to create an instance. More... | |
template<typename T > | |
Result | setOutput (const std::string &key, const T &value) |
void | setPostTickOverrideFunction (PostTickOverrideCallback callback) |
void | setPreTickOverrideFunction (PreTickOverrideCallback callback) |
NodeStatus | status () const |
StatusChangeSubscriber | subscribeToStatusChange (StatusChangeCallback callback) |
subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically. More... | |
TreeNode (std::string name, NodeConfiguration config) | |
TreeNode main constructor. More... | |
uint16_t | UID () const |
BT::NodeStatus | waitValidStatus () |
virtual | ~TreeNode ()=default |
The ActionNode is the prefered way to implement asynchronous Actions. It is actually easier to use correctly, when compared with AsyncAction.
It is particularly useful when your code contains a request-reply pattern, i.e. when the actions sends an asychronous request, then checks periodically if the reply has been received and, eventually, analyze the reply to determine if the result is SUCCESS or FAILURE.
-) an action that was in IDLE state will call onStart()
-) A RUNNING action will call onRunning()
-) if halted, method onHalted() is invoked
Definition at line 153 of file action_node.h.
|
inline |
Definition at line 156 of file action_node.h.
|
finaloverridevirtual |
The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.
Implements BT::TreeNode.
Definition at line 152 of file action_node.cpp.
|
pure virtual |
when the method halt() is called and the action is RUNNING, this method is invoked. This is a convenient place todo a cleanup, if needed.
Implemented in DummyNodes::SleepNode, and SleepNode.
|
pure virtual |
method invoked by a RUNNING action.
Implemented in DummyNodes::SleepNode, and SleepNode.
|
pure virtual |
method to be called at the beginning. If it returns RUNNING, this becomes an asychronous node.
Implemented in DummyNodes::SleepNode, and SleepNode.
|
finaloverridevirtual |
Method to be implemented by the user.
Implements BT::TreeNode.
Definition at line 124 of file action_node.cpp.