Class Diagrams
The following class diagram of the soar_ros::Service class (inheritance diagram) provides a basic overview of the library architecture.
All ROS wrapper classes adjusted for usage with Soar are based on the input or output base classes as well as the shared interface.
-
template<typename T, typename pRequestType = typename T::Request::SharedPtr, typename pResponseType = typename T::Response::SharedPtr>
class Service : public virtual soar_ros::Input<typename T::Request::SharedPtr>, public virtual soar_ros::Output<typename T::Response::SharedPtr>, public soar_ros::Interface Inheritence diagram for soar_ros::Service:
Collaboration diagram for soar_ros::Service:
The difference between service and client from the libraries perspective is only the reversal of output and input calls.
-
template<typename T, typename pRequestType = typename T::Request::SharedPtr, typename pResponseType = typename T::Response::SharedPtr>
class Client : public virtual soar_ros::Output<typename T::Request::SharedPtr>, public virtual soar_ros::Input<typename T::Response::SharedPtr>, public soar_ros::Interface Inheritence diagram for soar_ros::Client:
Collaboration diagram for soar_ros::Client:
Publisher and subscriber only have either the input or the output functionality: