File tree Expand file tree Collapse file tree 4 files changed +19
-4
lines changed Expand file tree Collapse file tree 4 files changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,11 @@ def nanoseconds(self):
34
34
def __repr__ (self ):
35
35
return 'Duration(nanoseconds={0})' .format (self .nanoseconds )
36
36
37
+ def __str__ (self ):
38
+ if self == Duration .Infinite ():
39
+ return 'Infinite'
40
+ return f'{ self .nanoseconds } nanoseconds'
41
+
37
42
def __eq__ (self , other ):
38
43
if isinstance (other , Duration ):
39
44
return self .nanoseconds == other .nanoseconds
@@ -77,5 +82,9 @@ def from_msg(cls, msg):
77
82
raise TypeError ('Must pass a builtin_interfaces.msg.Duration object' )
78
83
return cls (seconds = msg .sec , nanoseconds = msg .nanosec )
79
84
85
+ @classmethod
86
+ def Infinite (cls ):
87
+ return cls (nanoseconds = _rclpy .rclpy_RMW_DURATION_INFINITE )
88
+
80
89
def get_c_duration (self ):
81
90
return self ._duration_handle
Original file line number Diff line number Diff line change @@ -166,9 +166,9 @@ def __str__(self):
166
166
result += 'QoS profile:\n '
167
167
result += ' Reliability: %s\n ' % self .qos_profile .reliability .name
168
168
result += ' Durability: %s\n ' % self .qos_profile .durability .name
169
- result += ' Lifespan: %d nanoseconds \n ' % self .qos_profile .lifespan . nanoseconds
170
- result += ' Deadline: %d nanoseconds \n ' % self .qos_profile .deadline . nanoseconds
169
+ result += ' Lifespan: %s \n ' % str ( self .qos_profile .lifespan )
170
+ result += ' Deadline: %s \n ' % str ( self .qos_profile .deadline )
171
171
result += ' Liveliness: %s\n ' % self .qos_profile .liveliness .name
172
- result += ' Liveliness lease duration: %d nanoseconds ' % \
173
- self .qos_profile .liveliness_lease_duration . nanoseconds
172
+ result += ' Liveliness lease duration: %s ' % \
173
+ str ( self .qos_profile .liveliness_lease_duration )
174
174
return result
Original file line number Diff line number Diff line change @@ -69,6 +69,8 @@ PYBIND11_MODULE(_rclpy_pybind11, m) {
69
69
.value (" RCL_PUBLISHER_LIVELINESS_LOST" , RCL_PUBLISHER_LIVELINESS_LOST)
70
70
.value (" RCL_PUBLISHER_OFFERED_INCOMPATIBLE_QOS" , RCL_PUBLISHER_OFFERED_INCOMPATIBLE_QOS);
71
71
72
+ m.attr (" rclpy_RMW_DURATION_INFINITE" ) = py::int_ (rmw_time_total_nsec (RMW_DURATION_INFINITE));
73
+
72
74
py::register_exception<rclpy::RCUtilsError>(m, " RCUtilsError" , PyExc_RuntimeError);
73
75
py::register_exception<rclpy::RMWError>(m, " RMWError" , PyExc_RuntimeError);
74
76
auto rclerror = py::register_exception<rclpy::RCLError>(m, " RCLError" , PyExc_RuntimeError);
Original file line number Diff line number Diff line change @@ -228,3 +228,7 @@ def test_seconds_nanoseconds(self):
228
228
assert (1 , int (5e8 )) == Time (seconds = 1 , nanoseconds = 5e8 ).seconds_nanoseconds ()
229
229
assert (1 , int (5e8 )) == Time (seconds = 0 , nanoseconds = 15e8 ).seconds_nanoseconds ()
230
230
assert (0 , 0 ) == Time ().seconds_nanoseconds ()
231
+
232
+ def test_infinite_duration (self ):
233
+ duration = Duration .Infinite ()
234
+ assert str (duration ) == 'Infinite'
You can’t perform that action at this time.
0 commit comments