/
DdsDcpsInfrastructure.idl
351 lines (291 loc) · 13.4 KB
/
DdsDcpsInfrastructure.idl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
/*
*
*
* Distributed under the OpenDDS License.
* See: http://www.opendds.org/license.html
*/
#ifndef OPENDDS_DDSDCPSINFRASTRUCTURE_IDL
#define OPENDDS_DDSDCPSINFRASTRUCTURE_IDL
#include <dds/DdsDcpsCore.idl>
#include <dds/DdsDcpsConditionSeq.idl>
#define DOMAINID_TYPE_NATIVE long
#define HANDLE_NIL_NATIVE 0
// Implementation Note:
// Client code must include "Service_Participant.h"
// to have these definitions.
//#define TheParticipantFactory
// Implementation Note:
// Client code must include "Marked_Default_Qos.h"
// to have these definitions.
//#define PARTICIPANT_QOS_DEFAULT
//#define TOPIC_QOS_DEFAULT
//#define PUBLISHER_QOS_DEFAULT
//#define SUBSCRIBER_QOS_DEFAULT
//#define DATAWRITER_QOS_DEFAULT
//#define DATAREADER_QOS_DEFAULT
//#define DATAWRITER_QOS_USE_TOPIC_QOS
//#define DATAREADER_QOS_USE_TOPIC_QOS
#pragma ciao lem "dds/DdsDcpsInfrastructureE.idl"
module DDS {
typedef DOMAINID_TYPE_NATIVE DomainId_t;
// Moved to DdsDcpsCore.idl
// typedef HANDLE_TYPE_NATIVE InstanceHandle_t;
// typedef BUILTIN_TOPIC_KEY_TYPE_NATIVE BuiltinTopicKeyValue[3];
// typedef sequence<InstanceHandle_t> InstanceHandleSeq;
typedef long ReturnCode_t;
// ----------------------------------------------------------------------
// Pre-defined values
// ----------------------------------------------------------------------
const InstanceHandle_t HANDLE_NIL = HANDLE_NIL_NATIVE;
const long LENGTH_UNLIMITED = -1;
// ----------------------------------------------------------------------
// Return codes
// ----------------------------------------------------------------------
const ReturnCode_t RETCODE_OK = 0;
const ReturnCode_t RETCODE_ERROR = 1;
const ReturnCode_t RETCODE_UNSUPPORTED = 2;
const ReturnCode_t RETCODE_BAD_PARAMETER = 3;
const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = 4;
const ReturnCode_t RETCODE_OUT_OF_RESOURCES = 5;
const ReturnCode_t RETCODE_NOT_ENABLED = 6;
const ReturnCode_t RETCODE_IMMUTABLE_POLICY = 7;
const ReturnCode_t RETCODE_INCONSISTENT_POLICY = 8;
const ReturnCode_t RETCODE_ALREADY_DELETED = 9;
const ReturnCode_t RETCODE_TIMEOUT = 10;
const ReturnCode_t RETCODE_NO_DATA = 11;
const ReturnCode_t RETCODE_ILLEGAL_OPERATION = 12;
// ----------------------------------------------------------------------
// Status to support listeners and conditions
// ----------------------------------------------------------------------
typedef unsigned long StatusKind;
typedef unsigned long StatusMask; // bit-mask StatusKind
const StatusKind INCONSISTENT_TOPIC_STATUS = 0x0001 << 0;
const StatusKind OFFERED_DEADLINE_MISSED_STATUS = 0x0001 << 1;
const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = 0x0001 << 2;
const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 5;
const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 6;
const StatusKind SAMPLE_LOST_STATUS = 0x0001 << 7;
const StatusKind SAMPLE_REJECTED_STATUS = 0x0001 << 8;
const StatusKind DATA_ON_READERS_STATUS = 0x0001 << 9;
const StatusKind DATA_AVAILABLE_STATUS = 0x0001 << 10;
const StatusKind LIVELINESS_LOST_STATUS = 0x0001 << 11;
const StatusKind LIVELINESS_CHANGED_STATUS = 0x0001 << 12;
const StatusKind PUBLICATION_MATCHED_STATUS = 0x0001 << 13;
const StatusKind SUBSCRIPTION_MATCHED_STATUS = 0x0001 << 14;
struct InconsistentTopicStatus {
long total_count;
long total_count_change;
};
struct SampleLostStatus {
long total_count;
long total_count_change;
};
enum SampleRejectedStatusKind {
NOT_REJECTED,
REJECTED_BY_INSTANCES_LIMIT,
REJECTED_BY_SAMPLES_LIMIT,
REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT
};
struct SampleRejectedStatus {
long total_count;
long total_count_change;
SampleRejectedStatusKind last_reason;
InstanceHandle_t last_instance_handle;
};
struct LivelinessLostStatus {
long total_count;
long total_count_change;
};
struct LivelinessChangedStatus {
long alive_count;
long not_alive_count;
long alive_count_change;
long not_alive_count_change;
InstanceHandle_t last_publication_handle;
};
struct OfferedDeadlineMissedStatus {
long total_count;
long total_count_change;
InstanceHandle_t last_instance_handle;
};
struct RequestedDeadlineMissedStatus {
long total_count;
long total_count_change;
InstanceHandle_t last_instance_handle;
};
struct OfferedIncompatibleQosStatus {
long total_count;
long total_count_change;
QosPolicyId_t last_policy_id;
QosPolicyCountSeq policies;
};
struct RequestedIncompatibleQosStatus {
long total_count;
long total_count_change;
QosPolicyId_t last_policy_id;
QosPolicyCountSeq policies;
};
struct PublicationMatchedStatus {
long total_count;
long total_count_change;
long current_count;
long current_count_change;
InstanceHandle_t last_subscription_handle;
};
struct SubscriptionMatchedStatus {
long total_count;
long total_count_change;
long current_count;
long current_count_change;
InstanceHandle_t last_publication_handle;
};
// ----------------------------------------------------------------------
// Listeners
// ----------------------------------------------------------------------
local interface Listener;
local interface Entity;
//interface TopicDescription;
//interface Topic;
//interface ContentFilteredTopic;
//interface MultiTopic;
//interface DataWriter;
//interface DataReader;
//interface Subscriber;
//interface Publisher;
//typedef sequence<Topic> TopicSeq;
//typedef sequence<DataReader> DataReaderSeq;
local interface Listener {};
// ----------------------------------------------------------------------
// Conditions
// ----------------------------------------------------------------------
local interface Condition {
boolean get_trigger_value();
};
// WaitSet and GuardCondition can't be expressed in IDL because they are
// required by the spec to be default-constructable by the user
// (07-01-01 section 7.2.2 pgh 11). Therefore in IDL we have WaitSetInterf
// and GuardConditionInterf. Application code should #include
// "dds/DCPS/WaitSet.h", "dds/DCPS/GuardCondition.h" and construct heap
// objects with "new WaitSet()" and "new GuardCondition()". Those objects
// (in the DDS namespace/package) implement the interfaces described below.
// In C++, these are reference-counted local CORBA objects.
local interface WaitSetInterf {
ReturnCode_t wait(
inout ConditionSeq active_conditions,
in Duration_t timeout);
ReturnCode_t attach_condition(
in Condition cond);
ReturnCode_t detach_condition(
in Condition cond);
ReturnCode_t get_conditions(
inout ConditionSeq attached_conditions);
};
local interface GuardConditionInterf : Condition {
ReturnCode_t set_trigger_value(
in boolean value);
};
local interface StatusCondition : Condition {
StatusMask get_enabled_statuses();
ReturnCode_t set_enabled_statuses(
in StatusMask mask);
Entity get_entity();
};
// ----------------------------------------------------------------------
// Qos
// ----------------------------------------------------------------------
const string USERDATA_QOS_POLICY_NAME = "UserData";
const string DURABILITY_QOS_POLICY_NAME = "Durability";
const string PRESENTATION_QOS_POLICY_NAME = "Presentation";
const string DEADLINE_QOS_POLICY_NAME = "Deadline";
const string LATENCYBUDGET_QOS_POLICY_NAME = "LatencyBudget";
const string OWNERSHIP_QOS_POLICY_NAME = "Ownership";
const string OWNERSHIPSTRENGTH_QOS_POLICY_NAME = "OwnershipStrength";
const string LIVELINESS_QOS_POLICY_NAME = "Liveliness";
const string TIMEBASEDFILTER_QOS_POLICY_NAME = "TimeBasedFilter";
const string PARTITION_QOS_POLICY_NAME = "Partition";
const string RELIABILITY_QOS_POLICY_NAME = "Reliability";
const string DESTINATIONORDER_QOS_POLICY_NAME = "DestinationOrder";
const string HISTORY_QOS_POLICY_NAME = "History";
const string RESOURCELIMITS_QOS_POLICY_NAME = "ResourceLimits";
const string ENTITYFACTORY_QOS_POLICY_NAME = "EntityFactory";
const string WRITERDATALIFECYCLE_QOS_POLICY_NAME = "WriterDataLifecycle";
const string READERDATALIFECYCLE_QOS_POLICY_NAME = "ReaderDataLifecycle";
const string TOPICDATA_QOS_POLICY_NAME = "TopicData";
const string GROUPDATA_QOS_POLICY_NAME = "GroupData";
const string TRANSPORTPRIORITY_QOS_POLICY_NAME = "TransportPriority";
const string LIFESPAN_QOS_POLICY_NAME = "Lifespan";
const string DURABILITYSERVICE_POLICY_NAME = "DurabilityService";
const QosPolicyId_t INVALID_QOS_POLICY_ID = 0;
const QosPolicyId_t USERDATA_QOS_POLICY_ID = 1;
const QosPolicyId_t DURABILITY_QOS_POLICY_ID = 2;
const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = 3;
const QosPolicyId_t DEADLINE_QOS_POLICY_ID = 4;
const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = 5;
const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = 6;
const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = 7;
const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = 8;
const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = 9;
const QosPolicyId_t PARTITION_QOS_POLICY_ID = 10;
const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = 11;
const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = 12;
const QosPolicyId_t HISTORY_QOS_POLICY_ID = 13;
const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = 14;
const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = 15;
const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = 16;
const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = 17;
const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = 18;
const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = 19;
const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = 20;
const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = 21;
const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = 22;
// ----------------------------------------------------------------------
local interface Entity {
// ReturnCode_t set_qos(
// in EntityQos qos);
// ReturnCode_t get_qos(
// inout EntityQos qos);
// ReturnCode_t set_listener(
// in Listener l,
// in StatusMask mask);
// Listener get_listener();
ReturnCode_t enable();
StatusCondition get_statuscondition();
StatusMask get_status_changes();
InstanceHandle_t get_instance_handle();
};
};
module OpenDDS
{
const string TRANSPORTTYPE_QOS_POLICY_NAME = "TransportType";
// OpenDDS-specific QosPolicyId_t values start from the maximum
// QosPolicyId_t (a 32-bit signed integer) and decrement as new
// OpenDDS-specific values are added. The goal is to avoid
// potential conflicts with new OMG defined QosPolicyId_t values.
const ::DDS::QosPolicyId_t TRANSPORTTYPE_QOS_POLICY_ID = 0x7fffffff;
// DomainIds used by the implementation will be larger than this constant:
const ::DDS::DomainId_t MAX_USER_DOMAINID = 0x7fffffff;
const ::DDS::DomainId_t DOMAIN_UNKNOWN = -1;
module DCPS
{
const DDS::StatusMask ALL_STATUS_MASK = 0xffffffff;
const DDS::StatusMask NO_STATUS_MASK = 0x00000000;
const DDS::StatusMask DEFAULT_STATUS_MASK = ALL_STATUS_MASK;
local interface ConfigStore {
boolean has(in string key);
void set_boolean(in string key, in boolean value);
boolean get_boolean(in string key, in boolean default_value);
void set_int32(in string key, in int32 value);
int32 get_int32(in string key, in int32 default_value);
void set_uint32(in string key, in uint32 value);
uint32 get_uint32(in string key, in uint32 default_value);
void set_float64(in string key, in double value);
double get_float64(in string key, in double default_value);
void set_string(in string key, in string value);
string get_string(in string key, in string default_value);
void set_duration(in string key, in DDS::Duration_t value);
DDS::Duration_t get_duration(in string key, in DDS::Duration_t default_value);
void unset(in string key);
};
};
};
#endif /* OPENDDS_DCPS_INFRASTRUCTURE_IDL */