diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c69aa0e..b740a7d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) #============================================================================ # Initialize the project #============================================================================ -project(gz-transport14 VERSION 14.0.0) +project(gz-transport15 VERSION 15.0.0) #============================================================================ # Find gz-cmake @@ -33,7 +33,7 @@ cmake_dependent_option(USE_DIST_PACKAGES_FOR_PYTHON set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -gz_configure_project(VERSION_SUFFIX) +gz_configure_project(VERSION_SUFFIX pre1) #============================================================================ # Set project-specific options diff --git a/Changelog.md b/Changelog.md index 0db89251..b2798245 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +## Gazebo Transport 15.X + +### Gazebo Transport 15.0.0 (20XX-XX-XX) + ## Gazebo Transport 14.X ### Gazebo Transport 14.0.0 (2024-09-25) diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 892e9e0a..1be89061 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-transport-examples) # Find the Gazebo Transport library -find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) +find_package(gz-transport15 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport15_VERSION_MAJOR}) if (EXISTS "${CMAKE_SOURCE_DIR}/msgs/") # Message generation. Only required when using custom Protobuf messages. diff --git a/package.xml b/package.xml index dda99b37..6d6dccba 100644 --- a/package.xml +++ b/package.xml @@ -1,8 +1,8 @@ - gz-transport14 - 14.0.0 + gz-transport15 + 15.0.0 Gazebo Transport: Provides fast and efficient asynchronous message passing, services, and data logging. Carlos Agüero Apache License 2.0 diff --git a/python/examples/data_race_with_mutex.py b/python/examples/data_race_with_mutex.py index c31c4ef0..ac59440f 100644 --- a/python/examples/data_race_with_mutex.py +++ b/python/examples/data_race_with_mutex.py @@ -14,7 +14,7 @@ # from gz.msgs11.vector3d_pb2 import Vector3d -from gz.transport14 import Node +from gz.transport15 import Node from threading import Lock import time diff --git a/python/examples/data_race_without_mutex.py b/python/examples/data_race_without_mutex.py index 76bfea1f..d5ecf148 100644 --- a/python/examples/data_race_without_mutex.py +++ b/python/examples/data_race_without_mutex.py @@ -14,7 +14,7 @@ # from gz.msgs11.vector3d_pb2 import Vector3d -from gz.transport14 import Node +from gz.transport15 import Node import time diff --git a/python/examples/publisher.py b/python/examples/publisher.py index 45b6de3a..3d0f0881 100644 --- a/python/examples/publisher.py +++ b/python/examples/publisher.py @@ -16,7 +16,7 @@ #! [complete] from gz.msgs11.stringmsg_pb2 import StringMsg from gz.msgs11.vector3d_pb2 import Vector3d -from gz.transport14 import Node +from gz.transport15 import Node import time diff --git a/python/examples/requester.py b/python/examples/requester.py index 9f53cb49..ddc2065d 100644 --- a/python/examples/requester.py +++ b/python/examples/requester.py @@ -15,7 +15,7 @@ #! [complete] from gz.msgs11.stringmsg_pb2 import StringMsg -from gz.transport14 import Node +from gz.transport15 import Node def main(): node = Node() diff --git a/python/examples/subscriber.py b/python/examples/subscriber.py index 6c7a4750..fee25314 100644 --- a/python/examples/subscriber.py +++ b/python/examples/subscriber.py @@ -16,7 +16,7 @@ #! [complete] from gz.msgs11.stringmsg_pb2 import StringMsg from gz.msgs11.vector3d_pb2 import Vector3d -from gz.transport14 import Node +from gz.transport15 import Node import time diff --git a/python/src/transport/_gz_transport_pybind11.cc b/python/src/transport/_gz_transport_pybind11.cc index fb9717d1..ec1e94ea 100644 --- a/python/src/transport/_gz_transport_pybind11.cc +++ b/python/src/transport/_gz_transport_pybind11.cc @@ -323,7 +323,7 @@ PYBIND11_MODULE(BINDINGS_MODULE_NAME, m) { .def("has_connections", &gz::transport::Node::Publisher::HasConnections, "Return true if this publisher has subscribers"); -} // gz-transport14 module +} // gz-transport15 module } // python } // transport diff --git a/python/test/options_TEST.py b/python/test/options_TEST.py index 88cec80e..cae62c9d 100644 --- a/python/test/options_TEST.py +++ b/python/test/options_TEST.py @@ -1,5 +1,5 @@ from gz.msgs11.stringmsg_pb2 import StringMsg -from gz.transport14 import Node, AdvertiseMessageOptions, SubscribeOptions, NodeOptions +from gz.transport15 import Node, AdvertiseMessageOptions, SubscribeOptions, NodeOptions import unittest diff --git a/python/test/pubSub_TEST.py b/python/test/pubSub_TEST.py index e07e279b..9c7cc8a5 100644 --- a/python/test/pubSub_TEST.py +++ b/python/test/pubSub_TEST.py @@ -15,7 +15,7 @@ from gz.msgs11.stringmsg_pb2 import StringMsg from gz.msgs11.vector3d_pb2 import Vector3d -from gz.transport14 import Node, AdvertiseMessageOptions, SubscribeOptions, TopicStatistics +from gz.transport15 import Node, AdvertiseMessageOptions, SubscribeOptions, TopicStatistics from threading import Lock diff --git a/python/test/requester_TEST.py b/python/test/requester_TEST.py index 1607630e..e9adbf58 100644 --- a/python/test/requester_TEST.py +++ b/python/test/requester_TEST.py @@ -15,7 +15,7 @@ from gz.msgs11.int32_pb2 import Int32 from gz.msgs11.stringmsg_pb2 import StringMsg -from gz.transport14 import Node +from gz.transport15 import Node import os import subprocess diff --git a/tutorials/04_messages.md b/tutorials/04_messages.md index 4e6adc7f..0f3efb5f 100644 --- a/tutorials/04_messages.md +++ b/tutorials/04_messages.md @@ -17,7 +17,7 @@ cd ~/gz_transport_tutorial ## Publisher -Download the [publisher.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/publisher.cc) file within the `gz_transport_tutorial` +Download the [publisher.cc](https://github.com/gazebosim/gz-transport/raw/main/example/publisher.cc) file within the `gz_transport_tutorial` folder and open it with your favorite editor: \snippet example/publisher.cc complete @@ -76,7 +76,7 @@ The method *Publish()* sends a message to all the subscribers. ## Subscriber -Download the [subscriber.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/subscriber.cc) +Download the [subscriber.cc](https://github.com/gazebosim/gz-transport/raw/main/example/subscriber.cc) file into the `gz_transport_tutorial` folder and open it with your favorite editor: \snippet example/subscriber.cc complete @@ -126,7 +126,7 @@ until you hit *CTRL-C*. Note that this function captures the *SIGINT* and ## Building the code -Download the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/CMakeLists.txt) file within the `gz_transport_tutorial` folder. +Download the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/main/example/CMakeLists.txt) file within the `gz_transport_tutorial` folder. Once you have all your files, go ahead and create a `build/` directory within the `gz_transport_tutorial` directory. @@ -287,7 +287,7 @@ between Gazebo Transport and another protocol or if you want to just print the content of a generic protobuf message using `DebugString()`, among other use cases. -Download the [subscriber_generic.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/subscriber_generic.cc) file within the `gz_transport_tutorial` folder and open it with your favorite editor: +Download the [subscriber_generic.cc](https://github.com/gazebosim/gz-transport/raw/main/example/subscriber_generic.cc) file within the `gz_transport_tutorial` folder and open it with your favorite editor: ```{.cpp} #include @@ -416,12 +416,12 @@ often the integration of the message generation into the build system of your project. Next, you can find an example of a publisher and subscriber using a custom Protobuf message integrated with CMake. -Download the [publisher_custom_msg.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/publisher_custom_msg.cc) -and the [subscriber_custom_msg.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/subscriber_custom_msg.cc) +Download the [publisher_custom_msg.cc](https://github.com/gazebosim/gz-transport/raw/main/example/publisher_custom_msg.cc) +and the [subscriber_custom_msg.cc](https://github.com/gazebosim/gz-transport/raw/main/example/subscriber_custom_msg.cc) files within the `gz_transport_tutorial`. Then, create a `msgs` folder and -download the [stringmsg.proto](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/msgs/stringmsg.proto) -and the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/msgs/CMakeLists.txt) -files within the `msgs` folder. Finally, we'll need the main [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/CMakeLists.txt) +download the [stringmsg.proto](https://github.com/gazebosim/gz-transport/raw/main/example/msgs/stringmsg.proto) +and the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/main/example/msgs/CMakeLists.txt) +files within the `msgs` folder. Finally, we'll need the main [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/main/example/CMakeLists.txt) file. You should have this file from the previous examples. Otherwise, download and place it within the `gz_transport_tutorial` folder. diff --git a/tutorials/05_services.md b/tutorials/05_services.md index da4e0e95..4402095d 100644 --- a/tutorials/05_services.md +++ b/tutorials/05_services.md @@ -25,7 +25,7 @@ cd ~/gz_transport_tutorial ## Responser -Download the [responser.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/responser.cc) file within the ``gz_transport_tutorial`` +Download the [responser.cc](https://github.com/gazebosim/gz-transport/raw/main/example/responser.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: ```{.cpp} @@ -133,7 +133,7 @@ until you hit *CTRL-C*. Note that this function captures the *SIGINT* and ## Synchronous requester -Download the [requester.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/requester.cc) file within the ``gz_transport_tutorial`` +Download the [requester.cc](https://github.com/gazebosim/gz-transport/raw/main/example/requester.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: ```{.cpp} @@ -228,7 +228,7 @@ message. ## Asynchronous requester -Download the [requester_async.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/requester_async.cc) file within the +Download the [requester_async.cc](https://github.com/gazebosim/gz-transport/raw/main/example/requester_async.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: ```{.cpp} @@ -314,7 +314,7 @@ oneway service to process service requests without sending back responses. Oneway services don't accept any output parameters nor the requests have to wait for the response. -Download the [responser_oneway.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/responser_oneway.cc) file within the +Download the [responser_oneway.cc](https://github.com/gazebosim/gz-transport/raw/main/example/responser_oneway.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: ```{.cpp} @@ -389,7 +389,7 @@ This case is similar to the oneway service provider. This code can be used for requesting a service that does not need a response back. We don't need any output parameters in this case nor we have to wait for the response. -Download the [requester_oneway.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/requester_oneway.cc) file within the +Download the [requester_oneway.cc](https://github.com/gazebosim/gz-transport/raw/main/example/requester_oneway.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: ```{.cpp} @@ -454,7 +454,7 @@ request was already published. Sometimes we want to receive some result but don't have any input parameter to send. -Download the [responser_no_input.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/responser_no_input.cc) +Download the [responser_no_input.cc](https://github.com/gazebosim/gz-transport/raw/main/example/responser_no_input.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: @@ -534,7 +534,7 @@ service requests. This case is similar to the service without input parameter. We don't send any request. -Download the [requester_no_input.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/requester_no_input.cc) +Download the [requester_no_input.cc](https://github.com/gazebosim/gz-transport/raw/main/example/requester_no_input.cc) file within the ``gz_transport_tutorial`` folder and open it with your favorite editor: @@ -577,14 +577,14 @@ request timed out or reached the service provider and ``result`` shows if the service was successfully executed. We also have the async version for service request without input. You should -download [requester_async_no_input.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/requester_async_no_input.cc) +download [requester_async_no_input.cc](https://github.com/gazebosim/gz-transport/raw/main/example/requester_async_no_input.cc) file within the ``gz_transport_tutorial`` folder. ## Building the code -Download the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/CMakeLists.txt) file +Download the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/main/example/CMakeLists.txt) file within the ``gz_transport_tutorial`` folder. Then, create a `msgs` directory -and download [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/msgs/CMakeLists.txt) and [stringmsg.proto](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/msgs/stringmsg.proto) inside the +and download [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/main/example/msgs/CMakeLists.txt) and [stringmsg.proto](https://github.com/gazebosim/gz-transport/raw/main/example/msgs/stringmsg.proto) inside the ``msgs`` directory. Once you have all your files, go ahead and create a ``build/`` folder within diff --git a/tutorials/06_python_support.md b/tutorials/06_python_support.md index 74204c2c..dd4fc94f 100644 --- a/tutorials/06_python_support.md +++ b/tutorials/06_python_support.md @@ -9,7 +9,7 @@ In this tutorial, we are going to show the functionalities implemented in Python These features are brought up by creating bindings from the C++ implementation using pybind11. It is important to note that not all of C++ features are available yet, on this tutorial we will go over the most relevant features. For more information, -refer to the [__init__.py](https://github.com/gazebosim/gz-transport/blob/gz-transport14/python/src/__init__.py) +refer to the [__init__.py](https://github.com/gazebosim/gz-transport/blob/main/python/src/__init__.py) file which is a wrapper for all the bindings. For this tutorial, we will create two nodes that communicate via messages. One node @@ -24,7 +24,7 @@ cd ~/gz_transport_tutorial ## Publisher -Download the [publisher.py](https://github.com/gazebosim/gz-transport/blob/gz-transport14/python/examples/publisher.py) file within the `gz_transport_tutorial` +Download the [publisher.py](https://github.com/gazebosim/gz-transport/blob/main/python/examples/publisher.py) file within the `gz_transport_tutorial` folder and open it with your favorite editor: \snippet python/examples/publisher.py complete @@ -34,10 +34,10 @@ folder and open it with your favorite editor: ```{.py} from gz.msgs11.stringmsg_pb2 import StringMsg from gz.msgs11.vector3d_pb2 import Vector3d - from gz.transport14 import Node + from gz.transport15 import Node ``` -The library `gz.transport14` contains all the Gazebo Transport elements that can be +The library `gz.transport15` contains all the Gazebo Transport elements that can be used in Python. The final API we will use is contained inside the class `Node`. The lines `from gz.msgs11.stringmsg_pb2 import StringMsg` and `from gz.msgs11.vector3d_pb2 import Vector3d` @@ -89,7 +89,7 @@ each topic. The method *publish()* sends a message to all the subscribers. ## Subscriber -Download the [subscriber.py](https://github.com/gazebosim/gz-transport/blob/gz-transport14/python/examples/subscriber.py) +Download the [subscriber.py](https://github.com/gazebosim/gz-transport/blob/main/python/examples/subscriber.py) file into the `gz_transport_tutorial` folder and open it with your favorite editor: \snippet python/examples/subscriber.py complete @@ -99,10 +99,10 @@ file into the `gz_transport_tutorial` folder and open it with your favorite edit ```{.py} from gz.msgs11.stringmsg_pb2 import StringMsg from gz.msgs11.vector3d_pb2 import Vector3d - from gz.transport14 import Node + from gz.transport15 import Node ``` -Just as before, we are importing the `Node` class from the `gz.transport14` library +Just as before, we are importing the `Node` class from the `gz.transport15` library and the generated code for the `StringMsg` and `Vector3d` protobuf messages. ```{.py} @@ -240,9 +240,9 @@ in several places (publisher and subscribers). We developed a couple of examples that demonstrate this particular issue. Take a look at a publisher and subscriber (whithin the same node) that have race -conditions triggered in the [data_race_without_mutex.py](https://github.com/gazebosim/gz-transport/blob/gz-transport14/python/examples/data_race_without_mutex.py) file. The proposed solution to this +conditions triggered in the [data_race_without_mutex.py](https://github.com/gazebosim/gz-transport/blob/main/python/examples/data_race_without_mutex.py) file. The proposed solution to this issue is to use the `threading` library, you can see the same example with a mutex -in the [data_race_with_mutex.py](https://github.com/gazebosim/gz-transport/blob/gz-transport14/python/examples/data_race_with_mutex.py) file. +in the [data_race_with_mutex.py](https://github.com/gazebosim/gz-transport/blob/main/python/examples/data_race_with_mutex.py) file. You can run any of those examples by just doing the following in a terminal: ```{.sh} @@ -266,7 +266,7 @@ We can declare the throttling option using the following code : ```{.py} from gz.msgs11.stringmsg_pb2 import StringMsg - from gz.transport14 import Node, AdvertiseMessageOptions + from gz.transport15 import Node, AdvertiseMessageOptions # Create a transport node and advertise a topic with throttling enabled. node = Node() @@ -310,7 +310,7 @@ We can declare the throttling option using the following code : ```{.py} from gz.msgs11.stringmsg_pb2 import StringMsg - from gz.transport14 import Node, SubscribeOptions + from gz.transport15 import Node, SubscribeOptions def stringmsg_cb(msg: StringMsg): print("Received StringMsg: [{}]".format(msg.data)) @@ -350,7 +350,7 @@ topic without having to modify the publisher and create a new log. We can declare the topic remapping option using the following code: ```{.py} - from gz.transport14 import Node, NodeOptions + from gz.transport15 import Node, NodeOptions # Create a transport node and remap a topic. nodeOpts = NodeOptions() @@ -380,7 +380,7 @@ The command `gz log playback` also supports the notion of topic remapping. Run ## Service Requester -Download the [requester.py](https://github.com/gazebosim/gz-transport/blob/gz-transport14/python/examples/requester.py) +Download the [requester.py](https://github.com/gazebosim/gz-transport/blob/main/python/examples/requester.py) file into the `gz_transport_tutorial` folder and open it with your favorite editor: \snippet python/examples/requester.py complete @@ -389,10 +389,10 @@ file into the `gz_transport_tutorial` folder and open it with your favorite edit ```{.py} from gz.msgs11.stringmsg_pb2 import StringMsg - from gz.transport14 import Node + from gz.transport15 import Node ``` -Just as before, we are importing the `Node` class from the `gz.transport14` +Just as before, we are importing the `Node` class from the `gz.transport15` library and the generated code for the `StringMsg` protobuf message. ```{.py} @@ -421,7 +421,7 @@ result and response of the request in some variables and printing them out. Unfortunately, this feature is not available on Python at the moment. However, we can use a service responser created in C++ and make a request to it from a -code in Python. Taking that into account, we will use the [response.cc](https://github.com/gazebosim/gz-transport/blob/gz-transport14/example/responser.cc) file as the service responser. +code in Python. Taking that into account, we will use the [response.cc](https://github.com/gazebosim/gz-transport/blob/main/example/responser.cc) file as the service responser. ## Running the examples diff --git a/tutorials/08_relay.md b/tutorials/08_relay.md index 50649841..e1026c84 100644 --- a/tutorials/08_relay.md +++ b/tutorials/08_relay.md @@ -25,11 +25,11 @@ install Docker following any of the existing guides available ([here](https://docs.docker.com/get-docker/)'s one). We're going to build a Docker image and run it inside your host computer. -Download the [build.bash](https://github.com/gazebosim/gz-transport/raw/gz-transport14/docker/build.bash), [run.bash](https://github.com/gazebosim/gz-transport/raw/gz-transport14/docker/run.bash) and -[Dockerfile](https://github.com/gazebosim/gz-transport/raw/gz-transport14/docker/gz-transport/Dockerfile) files. +Download the [build.bash](https://github.com/gazebosim/gz-transport/raw/main/docker/build.bash), [run.bash](https://github.com/gazebosim/gz-transport/raw/main/docker/run.bash) and +[Dockerfile](https://github.com/gazebosim/gz-transport/raw/main/docker/gz-transport/Dockerfile) files. ```{.sh} -wget https://github.com/gazebosim/gz-transport/raw/gz-transport14/docker/gz-transport/Dockerfile -O Dockerfile +wget https://github.com/gazebosim/gz-transport/raw/main/docker/gz-transport/Dockerfile -O Dockerfile ``` Now, it's time to build the Docker image: diff --git a/tutorials/10_logging.md b/tutorials/10_logging.md index d969ab12..78d0fc52 100644 --- a/tutorials/10_logging.md +++ b/tutorials/10_logging.md @@ -25,7 +25,7 @@ cd ~/gz_transport_tutorial ## Record -Download the [record.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/record.cc) +Download the [record.cc](https://github.com/gazebosim/gz-transport/raw/main/example/record.cc) file within the `gz_transport_tutorial` folder and open it with your favorite editor: \snippet example/record.cc complete @@ -79,7 +79,7 @@ stops the log recording as expected. ## Play back -Download the [playback.cc](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/playback.cc) +Download the [playback.cc](https://github.com/gazebosim/gz-transport/raw/main/example/playback.cc) file within the `gz_transport_tutorial` folder and open it with your favorite editor: @@ -125,7 +125,7 @@ thread until all messages have been published. ## Building the code -Download the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/gz-transport14/example/CMakeLists.txt) +Download the [CMakeLists.txt](https://github.com/gazebosim/gz-transport/raw/main/example/CMakeLists.txt) file within the `gz_transport_tutorial` folder. Once you have all your files, go ahead and create a `build/` directory within diff --git a/tutorials/23_topic_statistics.md b/tutorials/23_topic_statistics.md index 92a214ff..1ecf6ff0 100644 --- a/tutorials/23_topic_statistics.md +++ b/tutorials/23_topic_statistics.md @@ -44,7 +44,7 @@ if (!node.EnableStats(topic, true)) } ``` -A complete example can be found in the [subscriber_stats example program](https://github.com/gazebosim/gz-transport/blob/gz-transport14/example/subscriber_stats.cc). +A complete example can be found in the [subscriber_stats example program](https://github.com/gazebosim/gz-transport/blob/main/example/subscriber_stats.cc). With both `GZ_TRANSPORT_TOPIC_STATISTICS` set to `1` and a node enabling topic statistics, then you will be able to echo statistic @@ -76,7 +76,7 @@ if (!node.EnableStats(topic, true, "/my_stats", 100)) For running the example, build the binaries in the example directory: ``` -git clone https://github.com/gazebosim/gz-transport -b gz-transport14 +git clone https://github.com/gazebosim/gz-transport -b main cd gz-transport/example cmake -S . -B build # For UNIX