@@ -50,7 +50,21 @@ pub trait IntoPrimitiveOptions<'a>: Sized {
50
50
51
51
/// Override all the quality of service settings for the primitive.
52
52
fn qos ( self , profile : QoSProfile ) -> PrimitiveOptions < ' a > {
53
- self . into_primitive_options ( ) . history ( profile. history )
53
+ let mut options = self
54
+ . into_primitive_options ( )
55
+ . history ( profile. history )
56
+ . reliability ( profile. reliability )
57
+ . durability ( profile. durability )
58
+ . deadline ( profile. deadline )
59
+ . lifespan ( profile. lifespan )
60
+ . liveliness ( profile. liveliness )
61
+ . liveliness_lease ( profile. liveliness_lease ) ;
62
+
63
+ if profile. avoid_ros_namespace_conventions {
64
+ options. avoid_ros_namespace_conventions = Some ( true ) ;
65
+ }
66
+
67
+ options
54
68
}
55
69
56
70
/// Use the default topics quality of service profile.
@@ -160,6 +174,23 @@ pub trait IntoPrimitiveOptions<'a>: Sized {
160
174
self . deadline ( QoSDuration :: Infinite )
161
175
}
162
176
177
+ /// Override the default [`QoSProfile::liveliness`] for the primitive.
178
+ fn liveliness ( self , liveliness : QoSLivelinessPolicy ) -> PrimitiveOptions < ' a > {
179
+ let mut options = self . into_primitive_options ( ) ;
180
+ options. liveliness = Some ( liveliness) ;
181
+ options
182
+ }
183
+
184
+ /// Set liveliness to [`QoSLivelinessPolicy::Automatic`].
185
+ fn liveliness_automatic ( self ) -> PrimitiveOptions < ' a > {
186
+ self . liveliness ( QoSLivelinessPolicy :: Automatic )
187
+ }
188
+
189
+ /// Set liveliness to [`QoSLivelinessPolicy::ManualByTopic`]
190
+ fn liveliness_manual ( self ) -> PrimitiveOptions < ' a > {
191
+ self . liveliness ( QoSLivelinessPolicy :: ManualByTopic )
192
+ }
193
+
163
194
/// Override the default [`QoSProfile::liveliness_lease`] for the primitive.
164
195
fn liveliness_lease ( self , lease : QoSDuration ) -> PrimitiveOptions < ' a > {
165
196
let mut options = self . into_primitive_options ( ) ;
0 commit comments