SMACC2
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Friends | List of all members
smacc2::ISmaccComponent Class Reference

#include <component.hpp>

Inheritance diagram for smacc2::ISmaccComponent:
Inheritance graph
Collaboration diagram for smacc2::ISmaccComponent:
Collaboration graph

Public Member Functions

 ISmaccComponent ()
 
virtual ~ISmaccComponent ()
 
virtual std::string getName () const
 

Protected Member Functions

virtual void onInitialize ()
 
template<typename EventType >
void postEvent (const EventType &ev)
 
template<typename EventType >
void postEvent ()
 
template<typename TOrthogonal , typename TSourceObject >
void onOrthogonalAllocation ()
 
template<typename TComponent >
void requiresComponent (TComponent *&requiredComponentStorage, bool throwExceptionIfNotExist=false)
 
template<typename TComponent >
void requiresComponent (std::string name, TComponent *&requiredComponentStorage, bool throwExceptionIfNotExist=false)
 
template<typename TClient >
void requiresClient (TClient *&requiredClientStorage)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingComponent (TArgs... targs)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingNamedComponent (std::string name, TArgs... targs)
 
rclcpp::Node::SharedPtr getNode ()
 
rclcpp::Logger getLogger () const
 
ISmaccStateMachinegetStateMachine ()
 

Protected Attributes

ISmaccStateMachinestateMachine_
 
ISmaccClientowner_
 

Private Member Functions

void initialize (ISmaccClient *owner)
 
void setStateMachine (ISmaccStateMachine *stateMachine)
 

Friends

class ISmaccOrthogonal
 
class ISmaccClient
 

Detailed Description

Definition at line 29 of file component.hpp.

Constructor & Destructor Documentation

◆ ISmaccComponent()

smacc2::ISmaccComponent::ISmaccComponent ( )

Definition at line 27 of file smacc_component.cpp.

27: owner_(nullptr) {}
ISmaccClient * owner_
Definition: component.hpp:83

◆ ~ISmaccComponent()

smacc2::ISmaccComponent::~ISmaccComponent ( )
virtual

Definition at line 25 of file smacc_component.cpp.

25{}

Member Function Documentation

◆ createSiblingComponent()

template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * smacc2::ISmaccComponent::createSiblingComponent ( TArgs...  targs)
protected

Definition at line 103 of file smacc_component_impl.hpp.

104{
105 return this->owner_->createComponent<SmaccComponentType, TOrthogonal, TClient>(targs...);
106}
SmaccComponentType * createComponent(TArgs... targs)

References smacc2::ISmaccClient::createComponent(), and owner_.

Here is the call graph for this function:

◆ createSiblingNamedComponent()

template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * smacc2::ISmaccComponent::createSiblingNamedComponent ( std::string  name,
TArgs...  targs 
)
protected

Definition at line 109 of file smacc_component_impl.hpp.

110{
111 return this->owner_->createNamedComponent<SmaccComponentType, TOrthogonal, TClient>(
112 name, targs...);
113}
SmaccComponentType * createNamedComponent(std::string name, TArgs... targs)

References smacc2::ISmaccClient::createNamedComponent(), and owner_.

Here is the call graph for this function:

◆ getLogger()

rclcpp::Logger smacc2::ISmaccComponent::getLogger ( ) const
protected

Definition at line 44 of file smacc_component.cpp.

44{ return owner_->getLogger(); }
rclcpp::Logger getLogger()

References smacc2::ISmaccClient::getLogger(), and owner_.

Referenced by cl_move_group_interface::CpGraspingComponent::createGraspableBox(), cl_nav2z::CostmapSwitch::disable(), cl_nav2z::CostmapSwitch::enable(), cl_move_group_interface::CpTrajectoryHistory::getLastTrajectory(), cl_nav2z::WaypointNavigator::loadWayPointsFromFile(), cl_nav2z::WaypointNavigator::loadWayPointsFromFile2(), cl_nav2z::odom_tracker::OdomTracker::logStateString(), cl_nav2z::WaypointNavigator::onGoalReached(), smacc2::components::CpTopicSubscriber< MessageType >::onInitialize(), cl_nav2z::CostmapSwitch::onInitialize(), cl_nav2z::odom_tracker::OdomTracker::onInitialize(), cl_nav2z::Pose::onInitialize(), cl_nav2z::odom_tracker::OdomTracker::popPath(), cl_nav2z::odom_tracker::OdomTracker::processOdometryMessage(), cl_nav2z::odom_tracker::OdomTracker::pushPath(), cl_move_group_interface::CpTrajectoryHistory::pushTrajectory(), cl_nav2z::CostmapSwitch::registerProxyFromDynamicReconfigureServer(), requiresComponent(), cl_nav2z::WaypointNavigator::seekName(), cl_nav2z::WaypointNavigator::sendNextGoal(), cl_nav2z::PlannerSwitcher::setBackwardPlanner(), cl_nav2z::PlannerSwitcher::setForwardPlanner(), cl_nav2z::GoalCheckerSwitcher::setGoalCheckerId(), cl_nav2z::PlannerSwitcher::setPureSpinningPlanner(), cl_nav2z::odom_tracker::OdomTracker::setStartPoint(), cl_nav2z::PlannerSwitcher::setUndoPathBackwardPlanner(), cl_nav2z::odom_tracker::OdomTracker::setWorkingMode(), cl_nav2z::Pose::update(), cl_nav2z::odom_tracker::OdomTracker::updateClearPath(), cl_nav2z::odom_tracker::OdomTracker::updateRecordPath(), and cl_nav2z::Pose::waitTransformUpdate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getName()

std::string smacc2::ISmaccComponent::getName ( ) const
virtual

◆ getNode()

rclcpp::Node::SharedPtr smacc2::ISmaccComponent::getNode ( )
protected

◆ getStateMachine()

ISmaccStateMachine * smacc2::ISmaccComponent::getStateMachine ( )
protected

◆ initialize()

void smacc2::ISmaccComponent::initialize ( ISmaccClient owner)
private

Definition at line 29 of file smacc_component.cpp.

30{
31 owner_ = owner;
32 this->onInitialize();
33}

References onInitialize(), and owner_.

Here is the call graph for this function:

◆ onInitialize()

void smacc2::ISmaccComponent::onInitialize ( )
protectedvirtual

◆ onOrthogonalAllocation()

template<typename TOrthogonal , typename TSourceObject >
void smacc2::ISmaccComponent::onOrthogonalAllocation ( )
inlineprotected

Definition at line 51 of file component.hpp.

52 {
53 }

◆ postEvent() [1/2]

template<typename EventType >
void smacc2::ISmaccComponent::postEvent
protected

Definition at line 37 of file smacc_component_impl.hpp.

38{
39 auto ev = new EventType();
41}
void postEvent(EventType *ev, EventLifeTime evlifetime=EventLifeTime::ABSOLUTE)

References smacc2::ISmaccStateMachine::postEvent(), and stateMachine_.

Referenced by smacc2::components::CpTopicSubscriber< MessageType >::onOrthogonalAllocation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ postEvent() [2/2]

template<typename EventType >
void smacc2::ISmaccComponent::postEvent ( const EventType &  ev)
protected

Definition at line 31 of file smacc_component_impl.hpp.

32{
34}

References smacc2::ISmaccStateMachine::postEvent(), and stateMachine_.

Here is the call graph for this function:

◆ requiresClient()

template<typename TClient >
void smacc2::ISmaccComponent::requiresClient ( TClient *&  requiredClientStorage)
protected

Definition at line 97 of file smacc_component_impl.hpp.

98{
99 this->owner_->requiresClient(requiredClientStorage);
100}
void requiresClient(SmaccClientType *&storage)

References owner_, and smacc2::ISmaccClient::requiresClient().

Here is the call graph for this function:

◆ requiresComponent() [1/2]

template<typename TComponent >
void smacc2::ISmaccComponent::requiresComponent ( std::string  name,
TComponent *&  requiredComponentStorage,
bool  throwExceptionIfNotExist = false 
)
protected

Definition at line 70 of file smacc_component_impl.hpp.

72{
73 requiredComponentStorage = this->owner_->getComponent<TComponent>(name);
74
75 if (requiredComponentStorage == nullptr && throwExceptionIfNotExist)
76 {
77 RCLCPP_DEBUG_STREAM(
78 this->getLogger(), std::string("Required component with name: '") + name + "'" +
79 demangleSymbol(typeid(TComponent).name()) +
80 " not found. Available components:");
81
82 std::vector<std::shared_ptr<ISmaccComponent>> components;
83 this->owner_->getComponents(components);
84
85 for (auto c : components)
86 {
87 RCLCPP_DEBUG(this->getLogger(), " - Component %s", c->getName().c_str());
88 }
89
90 throw std::runtime_error(
91 std::string("Component ") + demangleSymbol(typeid(TComponent).name()) +
92 std::string(" not found"));
93 }
94}
void getComponents(std::vector< std::shared_ptr< ISmaccComponent > > &components)
Definition: client.cpp:34
TComponent * getComponent()
rclcpp::Logger getLogger() const

References smacc2::introspection::demangleSymbol(), smacc2::ISmaccClient::getComponent(), smacc2::ISmaccClient::getComponents(), getLogger(), and owner_.

Here is the call graph for this function:

◆ requiresComponent() [2/2]

template<typename TComponent >
void smacc2::ISmaccComponent::requiresComponent ( TComponent *&  requiredComponentStorage,
bool  throwExceptionIfNotExist = false 
)
protected

Definition at line 44 of file smacc_component_impl.hpp.

46{
47 requiredComponentStorage = this->owner_->getComponent<TComponent>();
48
49 if (requiredComponentStorage == nullptr && throwExceptionIfNotExist)
50 {
51 RCLCPP_DEBUG_STREAM(
52 this->getLogger(), std::string("Required component ") +
53 demangleSymbol(typeid(TComponent).name()) +
54 " not found. Available components:");
55
56 std::vector<std::shared_ptr<ISmaccComponent>> components;
57 this->owner_->getComponents(components);
58
59 for (auto c : components)
60 {
61 RCLCPP_DEBUG(this->getLogger(), "- Component %s", c->getName().c_str());
62 }
63
64 throw std::runtime_error(
65 std::string("Component ") + demangleSymbol(typeid(TComponent).name()) + " not found");
66 }
67}

References smacc2::introspection::demangleSymbol(), smacc2::ISmaccClient::getComponent(), smacc2::ISmaccClient::getComponents(), getLogger(), and owner_.

Referenced by cl_nav2z::CpWaypointsVisualizer::onInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setStateMachine()

void smacc2::ISmaccComponent::setStateMachine ( ISmaccStateMachine stateMachine)
private

Definition at line 37 of file smacc_component.cpp.

38{
39 stateMachine_ = stateMachine;
40}

References stateMachine_.

Friends And Related Function Documentation

◆ ISmaccClient

friend class ISmaccClient
friend

Definition at line 94 of file component.hpp.

◆ ISmaccOrthogonal

friend class ISmaccOrthogonal
friend

Definition at line 93 of file component.hpp.

Member Data Documentation

◆ owner_

ISmaccClient* smacc2::ISmaccComponent::owner_
protected

◆ stateMachine_

ISmaccStateMachine* smacc2::ISmaccComponent::stateMachine_
protected

Definition at line 81 of file component.hpp.

Referenced by getStateMachine(), postEvent(), and setStateMachine().


The documentation for this class was generated from the following files: