Skip to content

Commit efcc246

Browse files
committed
don't busy wait
Signed-off-by: Brian Chen <[email protected]>
1 parent 20ba9fe commit efcc246

File tree

1 file changed

+5
-21
lines changed

1 file changed

+5
-21
lines changed

ros2param/ros2param/api/__init__.py

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
# limitations under the License.
1414

1515
import sys
16-
import time
1716
import warnings
1817

1918
from 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-
5543
def 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

7866
def 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

9178
def 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

10490
def 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

117102
def 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

Comments
 (0)