1515
1616package org .ros2 .rcljava .qos ;
1717
18+ import java .time .Duration ;
19+
1820import org .ros2 .rcljava .qos .policies .Durability ;
1921import org .ros2 .rcljava .qos .policies .History ;
22+ import org .ros2 .rcljava .qos .policies .Liveliness ;
2023import org .ros2 .rcljava .qos .policies .QoSPolicy ;
2124import org .ros2 .rcljava .qos .policies .Reliability ;
2225
2326public class QoSProfile {
24- private final History history ;
27+ // TODO(ivanpauno): Update all qos policies in a way that the objects are created from RCL,
28+ // to avoid depending on the enum values.
29+ private History history ;
30+
31+ private int depth ;
32+
33+ private Reliability reliability ;
34+
35+ private Durability durability ;
2536
26- private final int depth ;
37+ private Duration deadline = Duration . ofSeconds ( 0 , 0 ) ;
2738
28- private final Reliability reliability ;
39+ private Duration lifespan = Duration . ofSeconds ( 0 , 0 ) ;
2940
30- private final Durability durability ;
41+ private Liveliness liveliness = Liveliness . SYSTEM_DEFAULT ;
3142
32- private final boolean avoidROSNamespaceConventions ;
43+ private Duration livelinessLeaseDuration = Duration .ofSeconds (0 , 0 );
44+
45+ private boolean avoidROSNamespaceConventions ;
46+
47+ public QoSProfile (int depth ) {
48+ this (History .KEEP_LAST , depth , Reliability .RELIABLE , Durability .VOLATILE , false );
49+ }
3350
3451 public QoSProfile (History history , int depth , Reliability reliability , Durability durability ,
3552 boolean avoidROSNamespaceConventions ) {
@@ -44,39 +61,127 @@ public final History getHistory() {
4461 return this .history ;
4562 }
4663
64+ public final QoSProfile setHistory (final History history ) {
65+ this .history = history ;
66+ return this ;
67+ }
68+
4769 public final int getDepth () {
4870 return this .depth ;
4971 }
5072
73+ public final QoSProfile setDepth (final int depth ) {
74+ this .depth = depth ;
75+ return this ;
76+ }
77+
5178 public final Reliability getReliability () {
5279 return this .reliability ;
5380 }
5481
82+ public final QoSProfile setReliability (final Reliability reliability ) {
83+ this .reliability = reliability ;
84+ return this ;
85+ }
86+
5587 public final Durability getDurability () {
5688 return this .durability ;
5789 }
5890
91+ public final QoSProfile setDurability (final Durability durability ) {
92+ this .durability = durability ;
93+ return this ;
94+ }
95+
96+ public final Duration getDeadline () {
97+ return this .deadline ;
98+ }
99+
100+ public final QoSProfile setDeadline (final Duration deadline ) {
101+ this .deadline = deadline ;
102+ return this ;
103+ }
104+
105+ public final Duration getLifespan () {
106+ return this .lifespan ;
107+ }
108+
109+ public final QoSProfile setLifespan (final Duration lifespan ) {
110+ this .lifespan = lifespan ;
111+ return this ;
112+ }
113+
114+ public final Liveliness getLiveliness () {
115+ return this .liveliness ;
116+ }
117+
118+ public final QoSProfile setLiveliness (final Liveliness liveliness ) {
119+ this .liveliness = liveliness ;
120+ return this ;
121+ }
122+
123+ public final Duration getLivelinessLeaseDuration () {
124+ return this .livelinessLeaseDuration ;
125+ }
126+
127+ public final QoSProfile setLivelinessLeaseDuration (final Duration livelinessLeaseDuration ) {
128+ this .livelinessLeaseDuration = livelinessLeaseDuration ;
129+ return this ;
130+ }
131+
59132 public final boolean getAvoidROSNamespaceConventions () {
60133 return this .avoidROSNamespaceConventions ;
61134 }
62135
136+ public final QoSProfile setAvoidROSNamespaceConventions (final boolean avoidROSConventions ) {
137+ this .avoidROSNamespaceConventions = avoidROSConventions ;
138+ return this ;
139+ }
140+
141+ // TODO(ivanpauno): refactor all static default profiles methods,
142+ // so that the return value is get from the rmw definition directly
143+ // (leveraging a native function).
144+ public static final QoSProfile defaultProfile () {
145+ return new QoSProfile (10 );
146+ }
147+
148+ public static final QoSProfile systemDefault () {
149+ return new QoSProfile (
150+ History .SYSTEM_DEFAULT , QoSProfile .DEPTH_SYSTEM_DEFAULT ,
151+ Reliability .SYSTEM_DEFAULT , Durability .SYSTEM_DEFAULT , false );
152+ }
153+
154+ public static final QoSProfile sensorData () {
155+ return new QoSProfile (
156+ History .KEEP_LAST , 5 , Reliability .BEST_EFFORT , Durability .VOLATILE , false );
157+ }
158+
159+ public static final QoSProfile parametersDefault () {
160+ return new QoSProfile (
161+ History .KEEP_LAST , 1000 , Reliability .RELIABLE , Durability .VOLATILE , false );
162+ }
163+
164+ public static final QoSProfile servicesDefault () {
165+ return new QoSProfile (
166+ History .KEEP_LAST , 10 , Reliability .RELIABLE , Durability .VOLATILE , false );
167+ }
168+
169+ public static final QoSProfile parameterEventsDefault () {
170+ return new QoSProfile (
171+ History .KEEP_ALL , 1000 , Reliability .RELIABLE , Durability .VOLATILE , false );
172+ }
173+
63174 public static final int DEPTH_SYSTEM_DEFAULT = 0 ;
64175
65- public static final QoSProfile SENSOR_DATA =
66- new QoSProfile (History .KEEP_LAST , 5 , Reliability .BEST_EFFORT , Durability .VOLATILE , false );
176+ public static final QoSProfile SENSOR_DATA = sensorData ();
67177
68- public static final QoSProfile PARAMETERS =
69- new QoSProfile (History .KEEP_LAST , 1000 , Reliability .RELIABLE , Durability .VOLATILE , false );
178+ public static final QoSProfile PARAMETERS = parametersDefault ();
70179
71- public static final QoSProfile DEFAULT =
72- new QoSProfile (History .KEEP_LAST , 10 , Reliability .RELIABLE , Durability .VOLATILE , false );
180+ public static final QoSProfile DEFAULT = defaultProfile ();
73181
74- public static final QoSProfile SERVICES_DEFAULT =
75- new QoSProfile (History .KEEP_LAST , 10 , Reliability .RELIABLE , Durability .VOLATILE , false );
182+ public static final QoSProfile SERVICES_DEFAULT = servicesDefault ();
76183
77- public static final QoSProfile PARAMETER_EVENTS =
78- new QoSProfile (History .KEEP_ALL , 1000 , Reliability .RELIABLE , Durability .VOLATILE , false );
184+ public static final QoSProfile PARAMETER_EVENTS = parameterEventsDefault ();
79185
80- public static final QoSProfile SYSTEM_DEFAULT = new QoSProfile (History .SYSTEM_DEFAULT ,
81- DEPTH_SYSTEM_DEFAULT , Reliability .SYSTEM_DEFAULT , Durability .SYSTEM_DEFAULT , false );
186+ public static final QoSProfile SYSTEM_DEFAULT = systemDefault ();
82187}
0 commit comments