1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15+ from rclpy .qos import QoSDurabilityPolicy
16+ from rclpy .qos import QoSLivelinessPolicy
17+ from rclpy .qos import QoSReliabilityPolicy
18+
1519from ros2cli .node .direct import DirectNode
1620from ros2topic .api import TopicNameCompleter
1721from ros2topic .verb import VerbExtension
1822
23+ def print_topic_info (info ):
24+ print ('\n Node Name: %s' % info ['node_name' ])
25+ print ('Node Namespace: %s' % info ['node_namespace' ])
26+ print ('Topic Type: %s' % info ['topic_type' ])
27+ print ('QoS Profile:' )
28+ qos_profile = info ['qos_profile' ]
29+ print (' Reliability: %s' % QoSReliabilityPolicy (qos_profile ['reliability' ]).name )
30+ print (' Durability: %s' % QoSDurabilityPolicy (qos_profile ['durability' ]).name )
31+ print (' Lifespan: %d nanoseconds' % qos_profile ['lifespan' ].nanoseconds )
32+ print (' Deadline: %d nanoseconds' % qos_profile ['deadline' ].nanoseconds )
33+ print (' Liveliness: %s' % QoSLivelinessPolicy (qos_profile ['liveliness' ]).name )
34+ print (' Liveliness Lease Duration: %d nanoseconds' %
35+ qos_profile ['liveliness_lease_duration' ].nanoseconds )
1936
2037class InfoVerb (VerbExtension ):
2138 """Print information about a topic."""
@@ -30,6 +47,10 @@ def add_arguments(self, parser, cli_name):
3047 def main (self , * , args ):
3148 with DirectNode (args ) as node :
3249 topic_name = args .topic_name
33- print ('Topic: %s' % topic_name )
34- print ('Publisher count: %d' % node .count_publishers (topic_name ))
35- print ('Subscriber count: %d' % node .count_subscribers (topic_name ))
50+ print ('Topic : %s' % topic_name )
51+ print ('\n Publisher count : %d' % node .count_publishers (topic_name ))
52+ for publisher_info in node .get_publishers_info_by_topic (topic_name ):
53+ print_topic_info (publisher_info )
54+ print ('\n Subscription count : %d' % node .count_subscribers (topic_name ))
55+ for subscription_info in node .get_subscriptions_info_by_topic (topic_name ):
56+ print_topic_info (subscription_info )
0 commit comments