The CoroActionNode class is an a good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface. More...
#include <action_node.h>
Classes | |
struct | Pimpl |
Public Member Functions | |
CoroActionNode (const std::string &name, const NodeConfig &config) | |
virtual NodeStatus | executeTick () override final |
The method that should be used to invoke tick() and setStatus();. More... | |
void | halt () override |
void | setStatusRunningAndYield () |
Use this method to return RUNNING and temporary "pause" the Action. More... | |
void | tickImpl () |
virtual | ~CoroActionNode () override |
Public Member Functions inherited from BT::ActionNodeBase | |
ActionNodeBase (const std::string &name, const NodeConfig &config) | |
virtual NodeType | type () const override final |
~ActionNodeBase () override=default | |
Public Member Functions inherited from BT::LeafNode | |
LeafNode (const std::string &name, const NodeConfig &config) | |
virtual | ~LeafNode () override=default |
Public Member Functions inherited from BT::TreeNode | |
const NodeConfig & | config () const |
void | emitWakeUpSignal () |
Notify that the tree should be ticked again() More... | |
const std::string & | fullPath () const |
template<typename T > | |
Expected< T > | getInput (const std::string &key) const |
template<typename T > | |
Result | getInput (const std::string &key, T &destination) const |
template<typename T > | |
Expected< StampedValue< T > > | getInputStamped (const std::string &key) const |
template<typename T > | |
Expected< Timestamp > | getInputStamped (const std::string &key, T &destination) const |
getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when. More... | |
AnyPtrLocked | getLockedPortContent (const std::string &key) |
getLockedPortContent should be used when: More... | |
StringView | getRawPortValue (const std::string &key) const |
void | haltNode () |
bool | isHalted () const |
const std::string & | name () const |
Name of the instance, not the type. More... | |
TreeNode & | operator= (const TreeNode &other)=delete |
TreeNode & | operator= (TreeNode &&other) noexcept |
const std::string & | registrationName () const |
registrationName is the ID used by BehaviorTreeFactory to create an instance. More... | |
bool | requiresWakeUp () const |
template<typename T > | |
Result | setOutput (const std::string &key, const T &value) |
setOutput modifies the content of an Output port More... | |
void | setPostTickFunction (PostTickCallback callback) |
void | setPreTickFunction (PreTickCallback callback) |
void | setTickMonitorCallback (TickMonitorCallback 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 (const TreeNode &other)=delete | |
TreeNode (std::string name, NodeConfig config) | |
TreeNode main constructor. More... | |
TreeNode (TreeNode &&other) noexcept | |
uint16_t | UID () const |
BT::NodeStatus | waitValidStatus () |
virtual | ~TreeNode () |
Protected Member Functions | |
void | destroyCoroutine () |
Protected Member Functions inherited from BT::TreeNode | |
NodeConfig & | config () |
void | modifyPortsRemapping (const PortsRemapping &new_remapping) |
template<typename T > | |
T | parseString (const std::string &str) const |
PostScripts & | postConditionsScripts () |
PreScripts & | preConditionsScripts () |
void | resetStatus () |
Set the status to IDLE. More... | |
void | setRegistrationID (StringView ID) |
void | setStatus (NodeStatus new_status) |
setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user! More... | |
void | setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance) |
virtual BT::NodeStatus | tick ()=0 |
Method to be implemented by the user. More... | |
Protected Attributes | |
std::unique_ptr< Pimpl > | _p |
Additional Inherited Members | |
Public Types inherited from BT::TreeNode | |
using | PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)> |
using | PreTickCallback = std::function< NodeStatus(TreeNode &)> |
typedef std::shared_ptr< TreeNode > | Ptr |
using | StatusChangeCallback = StatusChangeSignal::CallableFunction |
using | StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus > |
using | StatusChangeSubscriber = StatusChangeSignal::Subscriber |
using | TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)> |
Static Public Member Functions inherited from BT::TreeNode | |
static Expected< StringView > | getRemappedKey (StringView port_name, StringView remapped_port) |
template<class DerivedT , typename... ExtraArgs> | |
static std::unique_ptr< TreeNode > | Instantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args) |
static bool | isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr) |
Check a string and return true if it matches the pattern: {...}. More... | |
static StringView | stripBlackboardPointer (StringView str) |
Protected Types inherited from BT::TreeNode | |
using | PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)> |
using | PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)> |
The CoroActionNode class is an a good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface.
It is up to the user to decide when to suspend execution of the Action and resume the parent node, invoking the method setStatusRunningAndYield().
Definition at line 196 of file action_node.h.
CoroActionNode::CoroActionNode | ( | const std::string & | name, |
const NodeConfig & | config | ||
) |
Definition at line 79 of file action_node.cpp.
|
overridevirtual |
Definition at line 83 of file action_node.cpp.
|
protected |
Definition at line 135 of file action_node.cpp.
|
finaloverridevirtual |
The method that should be used to invoke tick() and setStatus();.
Reimplemented from BT::TreeNode.
Definition at line 94 of file action_node.cpp.
|
overridevirtual |
You may want to override this method. But still, remember to call this implementation too.
Example:
void MyAction::halt() { // do your stuff here CoroActionNode::halt(); }
Implements BT::TreeNode.
Reimplemented in SimpleCoroAction.
Definition at line 129 of file action_node.cpp.
void CoroActionNode::setStatusRunningAndYield | ( | ) |
Use this method to return RUNNING and temporary "pause" the Action.
Definition at line 88 of file action_node.cpp.
void CoroActionNode::tickImpl | ( | ) |
Definition at line 124 of file action_node.cpp.
|
protected |
Definition at line 225 of file action_node.h.