00001
00002
00003
00004
00005
00006
00007
00008 #ifndef RTPS_RTPSCORE_IDL
00009 #define RTPS_RTPSCORE_IDL
00010
00011 #include "dds/DdsDcpsInfoUtils.idl"
00012
00013 module OpenDDS {
00014 module RTPS {
00015
00016 typedef octet OctetArray2[2];
00017 typedef octet OctetArray4[4];
00018
00019
00020
00021 typedef long FilterSignature_t[4];
00022
00023
00024
00025 typedef sequence<long> FilterResult_t;
00026
00027 typedef sequence<FilterSignature_t> FilterSignatureSeq;
00028
00029 struct ContentFilterInfo_t {
00030 FilterResult_t filterResult;
00031 FilterSignatureSeq filterSignatures;
00032 };
00033
00034 struct Property_t {
00035 string name;
00036 string value;
00037 };
00038
00039 typedef sequence<Property_t> PropertySeq;
00040
00041 struct EntityName_t {
00042 string name;
00043 };
00044
00045
00046
00047 struct Count_t {
00048 long value;
00049 };
00050
00051
00052 struct SequenceNumber_t {
00053 long high;
00054 unsigned long low;
00055 };
00056
00057
00058 typedef sequence<long, 8> LongSeq8;
00059
00060
00061
00062
00063
00064 struct SequenceNumberSet {
00065 SequenceNumber_t bitmapBase;
00066 unsigned long numBits;
00067 LongSeq8 bitmap;
00068 };
00069
00070
00071 typedef sequence<OpenDDS::DCPS::Locator_t, 8> LocatorList;
00072
00073
00074
00075
00076
00077
00078 struct Time_t {
00079 long seconds;
00080 unsigned long fraction;
00081 };
00082
00083
00084 typedef Time_t Timestamp_t;
00085
00086
00087
00088
00089
00090
00091 typedef Time_t Duration_t;
00092
00093 const long LOCATOR_KIND_INVALID = -1;
00094 const long LOCATOR_KIND_RESERVED = 0;
00095 const long LOCATOR_KIND_UDPv4 = 1;
00096 const long LOCATOR_KIND_UDPv6 = 2;
00097 const unsigned long LOCATOR_PORT_INVALID = 0;
00098
00099
00100
00101
00102 struct LocatorUDPv4_t {
00103 unsigned long address;
00104 unsigned long _port;
00105 };
00106
00107
00108
00109
00110
00111 struct TopicKind_t {
00112 long value;
00113 };
00114
00115
00116 const short NO_KEY = 1;
00117 const short WITH_KEY = 2;
00118
00119
00120
00121 struct ReliabilityKind_t {
00122 long value;
00123 };
00124
00125
00126 const short BEST_EFFORT = 1;
00127 const short RELIABLE = 3;
00128
00129 struct KeyHash_t {
00130 DCPS::OctetArray16 value;
00131 };
00132
00133 struct StatusInfo_t {
00134 OctetArray4 value;
00135 };
00136
00137
00138 struct ProtocolVersion_t {
00139 octet major;
00140 octet minor;
00141 };
00142
00143
00144
00145
00146 struct VendorId_t {
00147 OctetArray2 vendorId;
00148 };
00149
00150
00151 typedef unsigned long BuiltinEndpointSet_t;
00152 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_ANNOUNCER =
00153 1 << 0;
00154 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_DETECTOR =
00155 1 << 1;
00156 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PUBLICATION_ANNOUNCER =
00157 1 << 2;
00158 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PUBLICATION_DETECTOR =
00159 1 << 3;
00160 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_ANNOUNCER =
00161 1 << 4;
00162 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_DETECTOR =
00163 1 << 5;
00164 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_ANNOUNCER =
00165 1 << 6;
00166 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_DETECTOR =
00167 1 << 7;
00168 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_STATE_ANNOUNCER =
00169 1 << 8;
00170 const BuiltinEndpointSet_t DISC_BUILTIN_ENDPOINT_PARTICIPANT_STATE_DETECTOR =
00171 1 << 9;
00172 const BuiltinEndpointSet_t BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_WRITER =
00173 1 << 10;
00174 const BuiltinEndpointSet_t BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_READER =
00175 1 << 11;
00176
00177 union Parameter;
00178
00179
00180
00181 typedef sequence<Parameter> ParameterList;
00182
00183 struct OriginalWriterInfo_t {
00184 DCPS::GUID_t originalWriterGUID;
00185 SequenceNumber_t originalWriterSN;
00186 ParameterList originalWriterQos;
00187 };
00188
00189 typedef unsigned short ParameterId_t;
00190
00191
00192
00193 const ParameterId_t PID_PAD = 0x0000;
00194 const ParameterId_t PID_SENTINEL = 0x0001;
00195 const ParameterId_t PID_USER_DATA = 0x002c;
00196 const ParameterId_t PID_TOPIC_NAME = 0x0005;
00197 const ParameterId_t PID_TYPE_NAME = 0x0007;
00198 const ParameterId_t PID_GROUP_DATA = 0x002d;
00199 const ParameterId_t PID_TOPIC_DATA = 0x002e;
00200 const ParameterId_t PID_DURABILITY = 0x001d;
00201 const ParameterId_t PID_DURABILITY_SERVICE = 0x001e;
00202 const ParameterId_t PID_DEADLINE = 0x0023;
00203 const ParameterId_t PID_LATENCY_BUDGET = 0x0027;
00204 const ParameterId_t PID_LIVELINESS = 0x001b;
00205 const ParameterId_t PID_RELIABILITY = 0x001a;
00206 const ParameterId_t PID_LIFESPAN = 0x002b;
00207 const ParameterId_t PID_DESTINATION_ORDER = 0x0025;
00208 const ParameterId_t PID_HISTORY = 0x0040;
00209 const ParameterId_t PID_RESOURCE_LIMITS = 0x0041;
00210 const ParameterId_t PID_OWNERSHIP = 0x001f;
00211 const ParameterId_t PID_OWNERSHIP_STRENGTH = 0x0006;
00212 const ParameterId_t PID_PRESENTATION = 0x0021;
00213 const ParameterId_t PID_PARTITION = 0x0029;
00214 const ParameterId_t PID_TIME_BASED_FILTER = 0x0004;
00215 const ParameterId_t PID_TRANSPORT_PRIORITY = 0x0049;
00216 const ParameterId_t PID_PROTOCOL_VERSION = 0x0015;
00217 const ParameterId_t PID_VENDORID = 0x0016;
00218 const ParameterId_t PID_UNICAST_LOCATOR = 0x002f;
00219 const ParameterId_t PID_MULTICAST_LOCATOR = 0x0030;
00220 const ParameterId_t PID_MULTICAST_IPADDRESS = 0x0011;
00221 const ParameterId_t PID_DEFAULT_UNICAST_LOCATOR = 0x0031;
00222 const ParameterId_t PID_DEFAULT_MULTICAST_LOCATOR = 0x0048;
00223 const ParameterId_t PID_METATRAFFIC_UNICAST_LOCATOR = 0x0032;
00224 const ParameterId_t PID_METATRAFFIC_MULTICAST_LOCATOR = 0x0033;
00225 const ParameterId_t PID_DEFAULT_UNICAST_IPADDRESS = 0x000c;
00226 const ParameterId_t PID_DEFAULT_UNICAST_PORT = 0x000e;
00227 const ParameterId_t PID_METATRAFFIC_UNICAST_IPADDRESS = 0x0045;
00228 const ParameterId_t PID_METATRAFFIC_UNICAST_PORT = 0x000d;
00229 const ParameterId_t PID_METATRAFFIC_MULTICAST_IPADDRESS = 0x000b;
00230 const ParameterId_t PID_METATRAFFIC_MULTICAST_PORT = 0x0046;
00231 const ParameterId_t PID_EXPECTS_INLINE_QOS = 0x0043;
00232 const ParameterId_t PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT = 0x0034;
00233 const ParameterId_t PID_PARTICIPANT_BUILTIN_ENDPOINTS = 0x0044;
00234 const ParameterId_t PID_PARTICIPANT_LEASE_DURATION = 0x0002;
00235 const ParameterId_t PID_CONTENT_FILTER_PROPERTY = 0x0035;
00236 const ParameterId_t PID_PARTICIPANT_GUID = 0x0050;
00237 const ParameterId_t PID_PARTICIPANT_ENTITYID = 0x0051;
00238 const ParameterId_t PID_GROUP_GUID = 0x0052;
00239 const ParameterId_t PID_GROUP_ENTITYID = 0x0053;
00240 const ParameterId_t PID_BUILTIN_ENDPOINT_SET = 0x0058;
00241 const ParameterId_t PID_PROPERTY_LIST = 0x0059;
00242 const ParameterId_t PID_TYPE_MAX_SIZE_SERIALIZED = 0x0060;
00243 const ParameterId_t PID_ENTITY_NAME = 0x0062;
00244 const ParameterId_t PID_KEY_HASH = 0x0070;
00245 const ParameterId_t PID_STATUS_INFO = 0x0071;
00246
00247 const ParameterId_t PID_ENDPOINT_GUID = 0x005a;
00248
00249 const ParameterId_t PID_CONTENT_FILTER_INFO = 0x0055;
00250 const ParameterId_t PID_COHERENT_SET = 0x0056;
00251 const ParameterId_t PID_DIRECTED_WRITE = 0x0057;
00252 const ParameterId_t PID_ORIGINAL_WRITER_INFO = 0x0061;
00253
00254
00255 const ParameterId_t PIDMASK_VENDOR_SPECIFIC = 0x8000;
00256 const ParameterId_t PIDMASK_INCOMPATIBLE = 0x4000;
00257
00258
00259
00260
00261
00262
00263 const ParameterId_t PID_OPENDDS_BASE = PIDMASK_VENDOR_SPECIFIC + 0x3000;
00264 const ParameterId_t PID_OPENDDS_LOCATOR = PID_OPENDDS_BASE + 1;
00265 const ParameterId_t PID_OPENDDS_ASSOCIATED_WRITER = PID_OPENDDS_BASE + 2;
00266
00267
00268
00269 union Parameter switch (ParameterId_t) {
00270 case PID_TOPIC_NAME:
00271 case PID_TYPE_NAME:
00272 OpenDDS::DCPS::String256 string_data;
00273
00274
00275 case PID_USER_DATA:
00276 DDS::UserDataQosPolicy user_data;
00277 case PID_GROUP_DATA:
00278 DDS::GroupDataQosPolicy group_data;
00279 case PID_TOPIC_DATA:
00280 DDS::TopicDataQosPolicy topic_data;
00281 case PID_DURABILITY:
00282 DDS::DurabilityQosPolicy durability;
00283 case PID_DURABILITY_SERVICE:
00284 DDS::DurabilityServiceQosPolicy durability_service;
00285 case PID_DEADLINE:
00286 DDS::DeadlineQosPolicy deadline;
00287 case PID_LATENCY_BUDGET:
00288 DDS::LatencyBudgetQosPolicy latency_budget;
00289 case PID_LIVELINESS:
00290 DDS::LivelinessQosPolicy liveliness;
00291 case PID_RELIABILITY:
00292 DDS::ReliabilityQosPolicy reliability;
00293 case PID_LIFESPAN:
00294 DDS::LifespanQosPolicy lifespan;
00295 case PID_DESTINATION_ORDER:
00296 DDS::DestinationOrderQosPolicy destination_order;
00297 case PID_HISTORY:
00298 DDS::HistoryQosPolicy history;
00299 case PID_RESOURCE_LIMITS:
00300 DDS::ResourceLimitsQosPolicy resource_limits;
00301 case PID_OWNERSHIP:
00302 DDS::OwnershipQosPolicy ownership;
00303 case PID_OWNERSHIP_STRENGTH:
00304 DDS::OwnershipStrengthQosPolicy ownership_strength;
00305 case PID_PRESENTATION:
00306 DDS::PresentationQosPolicy presentation;
00307 case PID_PARTITION:
00308 DDS::PartitionQosPolicy partition;
00309 case PID_TIME_BASED_FILTER:
00310 DDS::TimeBasedFilterQosPolicy time_based_filter;
00311 case PID_TRANSPORT_PRIORITY:
00312 DDS::TransportPriorityQosPolicy transport_priority;
00313
00314
00315 case PID_PROTOCOL_VERSION:
00316 ProtocolVersion_t version;
00317
00318 case PID_VENDORID:
00319 VendorId_t vendor;
00320
00321 case PID_UNICAST_LOCATOR:
00322 case PID_MULTICAST_LOCATOR:
00323 case PID_DEFAULT_UNICAST_LOCATOR:
00324 case PID_DEFAULT_MULTICAST_LOCATOR:
00325 case PID_METATRAFFIC_UNICAST_LOCATOR:
00326 case PID_METATRAFFIC_MULTICAST_LOCATOR:
00327 DCPS::Locator_t locator;
00328
00329 case PID_MULTICAST_IPADDRESS:
00330 case PID_DEFAULT_UNICAST_IPADDRESS:
00331 case PID_METATRAFFIC_UNICAST_IPADDRESS:
00332 case PID_METATRAFFIC_MULTICAST_IPADDRESS:
00333 unsigned long ipv4_address;
00334
00335
00336
00337
00338 case PID_DEFAULT_UNICAST_PORT:
00339 case PID_METATRAFFIC_UNICAST_PORT:
00340 case PID_METATRAFFIC_MULTICAST_PORT:
00341 unsigned long udpv4_port;
00342
00343
00344
00345
00346 case PID_EXPECTS_INLINE_QOS:
00347 boolean expects_inline_qos;
00348
00349 case PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT:
00350 Count_t count;
00351
00352 case PID_PARTICIPANT_BUILTIN_ENDPOINTS:
00353 unsigned long participant_builtin_endpoints;
00354
00355 case PID_PARTICIPANT_LEASE_DURATION:
00356 Duration_t duration;
00357
00358 case PID_CONTENT_FILTER_PROPERTY:
00359 DCPS::ContentFilterProperty_t content_filter_property;
00360
00361 case PID_PARTICIPANT_GUID:
00362 case PID_ENDPOINT_GUID:
00363 case PID_GROUP_GUID:
00364 case PID_OPENDDS_ASSOCIATED_WRITER:
00365 DCPS::GUID_t guid;
00366
00367 case PID_PARTICIPANT_ENTITYID:
00368 case PID_GROUP_ENTITYID:
00369 DCPS::EntityId_t entity_id;
00370
00371 case PID_BUILTIN_ENDPOINT_SET:
00372 BuiltinEndpointSet_t builtin_endpoints;
00373
00374 case PID_PROPERTY_LIST:
00375 PropertySeq properties;
00376
00377 case PID_TYPE_MAX_SIZE_SERIALIZED:
00378 long type_max_size_serialized;
00379
00380 case PID_ENTITY_NAME:
00381 EntityName_t entity_name;
00382
00383 case PID_KEY_HASH:
00384 KeyHash_t key_hash;
00385
00386 case PID_STATUS_INFO:
00387 StatusInfo_t status_info;
00388
00389 case PID_CONTENT_FILTER_INFO:
00390 ContentFilterInfo_t content_filter_info;
00391
00392 case PID_COHERENT_SET:
00393 SequenceNumber_t coherent_set;
00394
00395 case PID_DIRECTED_WRITE:
00396 DCPS::GUIDSeq directed_write;
00397
00398 case PID_ORIGINAL_WRITER_INFO:
00399 OriginalWriterInfo_t original_writer_info;
00400
00401 case PID_OPENDDS_LOCATOR:
00402 DCPS::TransportLocator opendds_locator;
00403
00404 default:
00405 DDS::OctetSeq unknown_data;
00406 };
00407
00408
00409 struct SubmessageHeader {
00410 octet submessageId;
00411 octet flags;
00412 unsigned short submessageLength;
00413 };
00414
00415
00416
00417
00418
00419
00420 struct FragmentNumber_t {
00421 unsigned long value;
00422 };
00423
00424
00425
00426
00427 struct FragmentNumberSet {
00428 FragmentNumber_t bitmapBase;
00429 unsigned long numBits;
00430 LongSeq8 bitmap;
00431 };
00432
00433
00434
00435 struct AckNackSubmessage {
00436 SubmessageHeader smHeader;
00437
00438 DCPS::EntityId_t readerId;
00439 DCPS::EntityId_t writerId;
00440 SequenceNumberSet readerSNState;
00441 Count_t count;
00442 };
00443
00444
00445
00446 struct GapSubmessage {
00447 SubmessageHeader smHeader;
00448 DCPS::EntityId_t readerId;
00449 DCPS::EntityId_t writerId;
00450 SequenceNumber_t gapStart;
00451 SequenceNumberSet gapList;
00452 };
00453
00454
00455
00456
00457 struct InfoReplySubmessage {
00458 SubmessageHeader smHeader;
00459
00460 LocatorList unicastLocatorList;
00461 LocatorList multicastLocatorList;
00462 };
00463
00464
00465
00466 struct NackFragSubmessage {
00467 SubmessageHeader smHeader;
00468 DCPS::EntityId_t readerId;
00469 DCPS::EntityId_t writerId;
00470 SequenceNumber_t writerSN;
00471 FragmentNumberSet fragmentNumberState;
00472 Count_t count;
00473 };
00474
00475 struct ParticipantProxy_t {
00476 ProtocolVersion_t protocolVersion;
00477 DCPS::GuidPrefix_t guidPrefix;
00478 VendorId_t vendorId;
00479 boolean expectsInlineQos;
00480 BuiltinEndpointSet_t availableBuiltinEndpoints;
00481 DCPS::LocatorSeq metatrafficUnicastLocatorList;
00482 DCPS::LocatorSeq metatrafficMulticastLocatorList;
00483 DCPS::LocatorSeq defaultMulticastLocatorList;
00484 DCPS::LocatorSeq defaultUnicastLocatorList;
00485 Count_t manualLivelinessCount;
00486 };
00487
00488
00489 struct SPDPdiscoveredParticipantData {
00490 DDS::ParticipantBuiltinTopicData ddsParticipantData;
00491 ParticipantProxy_t participantProxy;
00492 Duration_t leaseDuration;
00493 };
00494
00495
00496
00497
00498 struct ParticipantMessageData {
00499 DCPS::GUID_t participantGuid;
00500 DDS::OctetSeq data;
00501 };
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517 struct Header {
00518 OctetArray4 prefix;
00519 ProtocolVersion_t version;
00520 VendorId_t vendorId;
00521 DCPS::GuidPrefix_t guidPrefix;
00522 };
00523
00524
00525
00526
00527
00528
00529 struct DataSubmessage {
00530 SubmessageHeader smHeader;
00531
00532
00533
00534 unsigned short extraFlags;
00535 unsigned short octetsToInlineQos;
00536 DCPS::EntityId_t readerId;
00537 DCPS::EntityId_t writerId;
00538 SequenceNumber_t writerSN;
00539 ParameterList inlineQos;
00540
00541
00542
00543 };
00544
00545
00546
00547
00548 struct DataFragSubmessage {
00549 SubmessageHeader smHeader;
00550
00551
00552 unsigned short extraFlags;
00553 unsigned short octetsToInlineQos;
00554 DCPS::EntityId_t readerId;
00555 DCPS::EntityId_t writerId;
00556 SequenceNumber_t writerSN;
00557 FragmentNumber_t fragmentStartingNum;
00558 unsigned short fragmentsInSubmessage;
00559 unsigned short fragmentSize;
00560 unsigned long sampleSize;
00561 ParameterList inlineQos;
00562
00563
00564
00565 };
00566
00567
00568
00569 struct HeartBeatSubmessage {
00570 SubmessageHeader smHeader;
00571
00572
00573 DCPS::EntityId_t readerId;
00574 DCPS::EntityId_t writerId;
00575 SequenceNumber_t firstSN;
00576 SequenceNumber_t lastSN;
00577 Count_t count;
00578 };
00579
00580
00581
00582 struct HeartBeatFragSubmessage {
00583 SubmessageHeader smHeader;
00584 DCPS::EntityId_t readerId;
00585 DCPS::EntityId_t writerId;
00586 SequenceNumber_t writerSN;
00587 FragmentNumber_t lastFragmentNum;
00588 Count_t count;
00589 };
00590
00591
00592
00593 struct InfoDestinationSubmessage {
00594 SubmessageHeader smHeader;
00595 DCPS::GuidPrefix_t guidPrefix;
00596 };
00597
00598
00599 struct InfoSourceSubmessage {
00600 SubmessageHeader smHeader;
00601 long unused;
00602 ProtocolVersion_t version;
00603 VendorId_t vendorId;
00604 DCPS::GuidPrefix_t guidPrefix;
00605 };
00606
00607
00608
00609 struct InfoTimestampSubmessage {
00610 SubmessageHeader smHeader;
00611
00612 Timestamp_t timestamp;
00613 };
00614
00615
00616
00617
00618 struct PadSubmessage {
00619 SubmessageHeader smHeader;
00620 };
00621
00622
00623
00624 struct InfoReplyIp4Submessage {
00625 SubmessageHeader smHeader;
00626
00627 LocatorUDPv4_t unicastLocator;
00628 LocatorUDPv4_t multicastLocator;
00629 };
00630
00631 enum SubmessageKind {
00632 RESERVED_0,
00633 PAD,
00634 RESERVED_2,
00635 RESERVED_3,
00636 RESERVED_4,
00637 RESERVED_5,
00638 ACKNACK,
00639 HEARTBEAT,
00640 GAP,
00641 INFO_TS,
00642 RESERVED_10,
00643 RESERVED_11,
00644 INFO_SRC,
00645 INFO_REPLY_IP4,
00646 INFO_DST,
00647 INFO_REPLY,
00648 RESERVED_16,
00649 RESERVED_17,
00650 NACK_FRAG,
00651 HEARTBEAT_FRAG,
00652 RESERVED_20,
00653 DATA,
00654 DATA_FRAG
00655 };
00656
00657 union Submessage switch (SubmessageKind) {
00658 case PAD:
00659 PadSubmessage pad_sm;
00660
00661 case ACKNACK:
00662 AckNackSubmessage acknack_sm;
00663
00664 case HEARTBEAT:
00665 HeartBeatSubmessage heartbeat_sm;
00666
00667 case GAP:
00668 GapSubmessage gap_sm;
00669
00670 case INFO_TS:
00671 InfoTimestampSubmessage info_ts_sm;
00672
00673 case INFO_SRC:
00674 InfoSourceSubmessage info_src_sm;
00675
00676 case INFO_REPLY_IP4:
00677 InfoReplyIp4Submessage info_reply_ipv4_sm;
00678
00679 case INFO_DST:
00680 InfoDestinationSubmessage info_dst_sm;
00681
00682 case INFO_REPLY:
00683 InfoReplySubmessage info_reply_sm;
00684
00685 case NACK_FRAG:
00686 NackFragSubmessage nack_frag_sm;
00687
00688 case HEARTBEAT_FRAG:
00689 HeartBeatFragSubmessage hb_frag_sm;
00690
00691 case DATA:
00692 DataSubmessage data_sm;
00693
00694 case DATA_FRAG:
00695 DataFragSubmessage data_frag_sm;
00696
00697 default:
00698 SubmessageHeader unknown_sm;
00699 };
00700
00701 typedef sequence<Submessage> SubmessageSeq;
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713 struct DiscoveredTopicData {
00714 DDS::TopicBuiltinTopicData ddsTopicData;
00715 };
00716 };
00717 };
00718
00719 #endif