1313# limitations under the License.
1414
1515import sys
16- import time
1716import warnings
1817
1918from rcl_interfaces .msg import ParameterType
@@ -41,20 +40,9 @@ def get_value(*, parameter_value):
4140 return value
4241
4342
44- def busy_wait_client (client , node ):
45- timeout_sec = 5
46- prev = time .time ()
47- while not (client .services_are_ready () or timeout_sec < 0 ):
48- client .wait_for_services (timeout_sec = 0.1 )
49- rclpy .spin_once (node )
50- timeout_sec -= prev - time .time ()
51- if not client .services_are_ready ():
52- raise RuntimeError ('Could not reach parameter services' )
53-
54-
5543def load_parameter_file (* , node , node_name , parameter_file , use_wildcard ):
5644 client = AsyncParameterClient (node , node_name )
57- busy_wait_client ( client , node )
45+ client . wait_for_services ( timeout_sec = 5.0 )
5846 future = client .load_parameter_file (parameter_file , use_wildcard )
5947 parameters = list (parameter_dict_from_yaml_file (parameter_file , use_wildcard ).values ())
6048 rclpy .spin_until_future_complete (node , future )
@@ -77,8 +65,7 @@ def load_parameter_file(*, node, node_name, parameter_file, use_wildcard):
7765
7866def call_describe_parameters (* , node , node_name , parameter_names = None ):
7967 client = AsyncParameterClient (node , node_name )
80- busy_wait_client (client , node )
81-
68+ client .wait_for_services (timeout_sec = 5.0 )
8269 future = client .describe_parameters (parameter_names )
8370 rclpy .spin_until_future_complete (node , future )
8471 response = future .result ()
@@ -90,8 +77,7 @@ def call_describe_parameters(*, node, node_name, parameter_names=None):
9077
9178def call_get_parameters (* , node , node_name , parameter_names ):
9279 client = AsyncParameterClient (node , node_name )
93- busy_wait_client (client , node )
94-
80+ client .wait_for_services (timeout_sec = 5.0 )
9581 future = client .get_parameters (parameter_names )
9682 rclpy .spin_until_future_complete (node , future )
9783 response = future .result ()
@@ -103,8 +89,7 @@ def call_get_parameters(*, node, node_name, parameter_names):
10389
10490def call_set_parameters (* , node , node_name , parameters ):
10591 client = AsyncParameterClient (node , node_name )
106- busy_wait_client (client , node )
107-
92+ client .wait_for_services (timeout_sec = 5.0 )
10893 future = client .set_parameters (parameters )
10994 rclpy .spin_until_future_complete (node , future )
11095 response = future .result ()
@@ -116,8 +101,7 @@ def call_set_parameters(*, node, node_name, parameters):
116101
117102def call_list_parameters (* , node , node_name , prefixes = None ):
118103 client = AsyncParameterClient (node , node_name )
119- busy_wait_client (client , node )
120-
104+ client .wait_for_services (timeout_sec = 5.0 )
121105 future = client .list_parameters (prefixes = prefixes )
122106 rclpy .spin_until_future_complete (node , future )
123107 response = future .result ()
0 commit comments