00001
00002
00003 #ifndef _DDS_DCPS_H
00004 #define _DDS_DCPS_H
00005
00006 #include "corba/LocalObject.h"
00007 #include "corba/IDL_LO_var.h"
00008 #include "dds/dds_types.h"
00009
00010 #define DOMAINID_TYPE_NATIVE long
00011 #define HANDLE_TYPE_NATIVE long
00012 #define HANDLE_NIL_NATIVE 0
00013 #define BUILTIN_TOPIC_KEY_TYPE_NATIVE long
00014 #define TheParticipantFactory
00015 #define PARTICIPANT_QOS_DEFAULT
00016 #define TOPIC_QOS_DEFAULT
00017 #define PUBLISHER_QOS_DEFAULT
00018 #define SUBSCRIBER_QOS_DEFAULT
00019 #define DATAWRITER_QOS_DEFAULT
00020 #define DATAREADER_QOS_DEFAULT
00021 #define DATAWRITER_QOS_USE_TOPIC_QOS
00022 #define DATAREADER_QOS_USE_TOPIC_QOS
00023
00029 namespace DDS {
00030
00032 typedef DOMAINID_TYPE_NATIVE DomainId_t;
00033
00035 typedef HANDLE_TYPE_NATIVE InstanceHandle_t;
00036
00037 typedef ::CORBA::IDL_UTSeq<InstanceHandle_t> InstanceHandleSeq;
00038
00039 struct BuiltinTopicKey_t {
00040 BUILTIN_TOPIC_KEY_TYPE_NATIVE value[3];
00041 };
00042
00044 typedef long ReturnCode_t;
00045
00047 typedef long QosPolicyId_t;
00048
00050 struct Duration_t {
00051 long sec;
00052 unsigned long nanosec;
00053 };
00054
00056 struct Time_t {
00057 long sec;
00058 unsigned long nanosec;
00059 };
00060
00061
00062
00063
00064
00065 const InstanceHandle_t HANDLE_NIL = HANDLE_NIL_NATIVE;
00066
00067 const long LENGTH_UNLIMITED = -1;
00068
00069 const long DURATION_INFINITE_SEC = 0x7fffffff;
00070 const unsigned long DURATION_INFINITE_NSEC = 0x7fffffff;
00071 const long DURATION_ZERO_SEC = 0;
00072 const unsigned long DURATION_ZERO_NSEC = 0;
00073 const long TIME_INVALID_SEC = -1;
00074 const unsigned long TIME_INVALID_NSEC = 0xffffffff;
00075
00076
00077
00078
00079
00080 const ReturnCode_t RETCODE_OK = 0;
00081 const ReturnCode_t RETCODE_ERROR = 1;
00082 const ReturnCode_t RETCODE_UNSUPPORTED = 2;
00083 const ReturnCode_t RETCODE_BAD_PARAMETER = 3;
00084 const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = 4;
00085 const ReturnCode_t RETCODE_OUT_OF_RESOURCES = 5;
00086 const ReturnCode_t RETCODE_NOT_ENABLED = 6;
00087 const ReturnCode_t RETCODE_IMMUTABLE_POLICY = 7;
00088 const ReturnCode_t RETCODE_INCONSISTENT_POLICY = 8;
00089 const ReturnCode_t RETCODE_ALREADY_DELETED = 9;
00090 const ReturnCode_t RETCODE_TIMEOUT = 10;
00091 const ReturnCode_t RETCODE_NO_DATA = 11;
00092 const ReturnCode_t RETCODE_ILLEGAL_OPERATION = 12;
00093
00094
00095
00096
00097
00100 typedef unsigned long StatusKind;
00101
00103 typedef unsigned long StatusMask;
00104
00107 const StatusKind INCONSISTENT_TOPIC_STATUS = 0x0001 << 0;
00108
00109 const StatusKind OFFERED_DEADLINE_MISSED_STATUS = 0x0001 << 1;
00110
00113 const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = 0x0001 << 2;
00114
00117 const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 5;
00118
00119 const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 6;
00120
00122 const StatusKind SAMPLE_LOST_STATUS = 0x0001 << 7;
00123
00125 const StatusKind SAMPLE_REJECTED_STATUS = 0x0001 << 8;
00126
00128 const StatusKind DATA_ON_READERS_STATUS = 0x0001 << 9;
00129
00131 const StatusKind DATA_AVAILABLE_STATUS = 0x0001 << 10;
00132
00133 const StatusKind LIVELINESS_LOST_STATUS = 0x0001 << 11;
00134
00138 const StatusKind LIVELINESS_CHANGED_STATUS = 0x0001 << 12;
00139
00140 const StatusKind PUBLICATION_MATCHED_STATUS = 0x0001 << 13;
00141
00145 const StatusKind SUBSCRIPTION_MATCHED_STATUS = 0x0001 << 14;
00146
00148 struct InconsistentTopicStatus {
00149
00153 long total_count;
00154
00157 long total_count_change;
00158 };
00159
00161 struct SampleLostStatus {
00162
00163 long total_count;
00164
00165 long total_count_change;
00166 };
00167
00168 enum SampleRejectedStatusKind {
00169 NOT_REJECTED,
00170 REJECTED_BY_INSTANCES_LIMIT,
00171 REJECTED_BY_SAMPLES_LIMIT,
00172 REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT
00173 };
00174
00176 struct SampleRejectedStatus {
00177
00178 long total_count;
00179 long total_count_change;
00180 SampleRejectedStatusKind last_reason;
00181 InstanceHandle_t last_instance_handle;
00182 };
00183
00184 struct LivelinessLostStatus {
00185 long total_count;
00186 long total_count_change;
00187 };
00188
00191 struct LivelinessChangedStatus {
00192
00198 long alive_count;
00199
00202 long not_alive_count;
00203
00206 long alive_count_change;
00207
00210 long not_alive_count_change;
00211
00214 InstanceHandle_t last_publication_handle;
00215 };
00216
00217 struct OfferedDeadlineMissedStatus {
00218 long total_count;
00219 long total_count_change;
00220 InstanceHandle_t last_instance_handle;
00221 };
00222
00224 struct RequestedDeadlineMissedStatus {
00225 long total_count;
00226 long total_count_change;
00227 InstanceHandle_t last_instance_handle;
00228 };
00229
00230 struct QosPolicyCount {
00231 QosPolicyId_t policy_id;
00232 long count;
00233 };
00234 typedef ::CORBA::IDL_UTSeq<QosPolicyCount> QosPolicyCountSeq;
00235
00236 struct OfferedIncompatibleQosStatus {
00237 long total_count;
00238 long total_count_change;
00239 QosPolicyId_t last_policy_id;
00240 QosPolicyCountSeq policies;
00241 };
00242
00243 struct RequestedIncompatibleQosStatus {
00244 long total_count;
00245 long total_count_change;
00246 QosPolicyId_t last_policy_id;
00247 QosPolicyCountSeq policies;
00248 };
00249
00250 struct PublicationMatchedStatus {
00251 long total_count;
00252 long total_count_change;
00253 long current_count;
00254 long current_count_change;
00255 InstanceHandle_t last_subscription_handle;
00256 };
00257
00259 struct SubscriptionMatchedStatus {
00260
00265 long total_count;
00266
00269 long total_count_change;
00270
00272 long current_count;
00273
00276 long current_count_change;
00277
00278 InstanceHandle_t last_publication_handle;
00279 };
00280
00281
00282
00283
00284
00285 class Entity;
00286 typedef Entity* Entity_ptr;
00287 typedef ::CORBA::IDL_LO_var<Entity> Entity_var;
00288
00289 class TopicDescription;
00290 typedef TopicDescription* TopicDescription_ptr;
00291 typedef ::CORBA::IDL_LO_var<TopicDescription> TopicDescription_var;
00292
00293 class Topic;
00294 typedef Topic* Topic_ptr;
00295 typedef ::CORBA::IDL_LO_var<Topic> Topic_var;
00296
00297 class ContentFilteredTopic;
00298 typedef ContentFilteredTopic* ContentFilteredTopic_ptr;
00299 typedef ::CORBA::IDL_LO_var<ContentFilteredTopic> ContentFilteredTopic_var;
00300
00301 class MultiTopic;
00302 typedef MultiTopic* MultiTopic_ptr;
00303 typedef ::CORBA::IDL_LO_var<MultiTopic> MultiTopic_var;
00304
00305 class TypeSupport;
00306 typedef TypeSupport* TypeSupport_ptr;
00307 typedef ::CORBA::IDL_LO_var<TypeSupport> TypeSupport_var;
00308
00309
00310
00311 class Listener;
00312 typedef Listener* Listener_ptr;
00313 typedef ::CORBA::IDL_LO_var<Listener> Listener_var;
00314
00315 class TopicListener;
00316 typedef TopicListener* TopicListener_ptr;
00317 typedef ::CORBA::IDL_LO_var<TopicListener> TopicListener_var;
00318
00319 class DomainParticipantListener;
00320 typedef DomainParticipantListener* DomainParticipantListener_ptr;
00321 typedef ::CORBA::IDL_LO_var<DomainParticipantListener>
00322 DomainParticipantListener_var;
00323
00324
00325
00326 class PublisherListener;
00327 typedef PublisherListener* PublisherListener_ptr;
00328 typedef ::CORBA::IDL_LO_var<PublisherListener> PublisherListener_var;
00329
00330 class DataWriterListener;
00331 typedef DataWriterListener* DataWriterListener_ptr;
00332 typedef ::CORBA::IDL_LO_var<DataWriterListener> DataWriterListener_var;
00333
00334
00335
00336 class SubscriberListener;
00337 typedef SubscriberListener* SubscriberListener_ptr;
00338 typedef ::CORBA::IDL_LO_var<SubscriberListener> SubscriberListener_var;
00339
00340 class DataReaderListener;
00341 typedef DataReaderListener* DataReaderListener_ptr;
00342 typedef ::CORBA::IDL_LO_var<DataReaderListener> DataReaderListener_var;
00343
00344
00345
00346 class DomainParticipant;
00347 typedef DomainParticipant* DomainParticipant_ptr;
00348 typedef ::CORBA::IDL_LO_var<DomainParticipant> DomainParticipant_var;
00349
00350 class DomainParticipantFactory;
00351 typedef DomainParticipantFactory* DomainParticipantFactory_ptr;
00352 typedef ::CORBA::IDL_LO_var<DomainParticipantFactory>
00353 DomainParticipantFactory_var;
00354
00355
00356
00357 class Publisher;
00358 typedef Publisher* Publisher_ptr;
00359 typedef ::CORBA::IDL_LO_var<Publisher> Publisher_var;
00360
00361 class DataWriter;
00362 typedef DataWriter* DataWriter_ptr;
00363 typedef ::CORBA::IDL_LO_var<DataWriter> DataWriter_var;
00364
00365
00366
00367 class Subscriber;
00368 typedef Subscriber* Subscriber_ptr;
00369 typedef ::CORBA::IDL_LO_var<Subscriber> Subscriber_var;
00370
00371 class DataReader;
00372 typedef DataReader* DataReader_ptr;
00373 typedef ::CORBA::IDL_LO_var<DataReader> DataReader_var;
00374 typedef ::CORBA::IDL_UTSeq<DataReader> DataReaderSeq;
00375
00376
00377
00378
00379
00381 class Listener : public ::CORBA::LocalObject {
00382 public:
00383 };
00384
00386 class TopicListener : public virtual Listener {
00387
00388 public:
00389
00391 virtual void on_inconsistent_topic(Topic_ptr the_topic,
00392 const InconsistentTopicStatus& status) = 0;
00393 };
00394
00397 class DataWriterListener : public virtual Listener {
00398
00399 virtual void
00400 on_offered_deadline_missed(DataWriter_ptr writer,
00401 const OfferedDeadlineMissedStatus& status) = 0;
00402
00403 virtual void
00404 on_offered_incompatible_qos(DataWriter_ptr writer,
00405 const OfferedIncompatibleQosStatus& status) = 0;
00406
00407 virtual void
00408 on_liveliness_lost(DataWriter_ptr writer,
00409 const LivelinessLostStatus& status) = 0;
00410
00411 virtual void
00412 on_publication_matched(DataWriter_ptr writer,
00413 const PublicationMatchedStatus& status) = 0;
00414 };
00415
00417 class PublisherListener : public virtual DataWriterListener {
00418 };
00419
00421 class DataReaderListener : public virtual Listener {
00422
00423 public:
00424
00426 virtual void on_requested_deadline_missed(
00427 DataReader_ptr the_reader,
00428 const RequestedDeadlineMissedStatus& status) = 0;
00429
00431 virtual void on_requested_incompatible_qos(
00432 DataReader_ptr the_reader,
00433 const RequestedIncompatibleQosStatus& status) = 0;
00434
00436 virtual void on_sample_rejected(
00437 DataReader_ptr the_reader,
00438 const SampleRejectedStatus& status) = 0;
00439
00441 virtual void on_liveliness_changed(
00442 DataReader_ptr the_reader,
00443 const LivelinessChangedStatus& status) = 0;
00444
00446 virtual void on_data_available(DataReader_ptr the_reader) = 0;
00447
00449 virtual void on_subscription_matched(
00450 DataReader_ptr the_reader,
00451 const SubscriptionMatchedStatus& status) = 0;
00452
00454 virtual void on_sample_lost(
00455 DataReader_ptr the_reader,
00456 const SampleLostStatus& status) = 0;
00457
00458 };
00459
00461 class SubscriberListener : public virtual DataReaderListener {
00462
00463 public:
00464
00472 virtual void on_data_on_readers(Subscriber_ptr the_subscriber) = 0;
00473
00474 };
00475
00477 class DomainParticipantListener : public virtual TopicListener,
00478 public virtual PublisherListener,
00479 public virtual SubscriberListener {
00480
00481 public:
00482
00483 };
00484
00485
00486
00487
00488
00489 class Condition;
00490 typedef Condition* Condition_ptr;
00491 typedef ::CORBA::IDL_LO_var<Condition> Condition_var;
00492 typedef ::CORBA::IDL_UTSeq< Condition_var > ConditionSeq;
00493
00494 class GuardCondition;
00495 typedef GuardCondition* GuardCondition_ptr;
00496 typedef ::CORBA::IDL_LO_var<GuardCondition> GuardCondition_var;
00497 typedef ::CORBA::IDL_UTSeq< GuardCondition_var > GuardConditionSeq;
00498
00499 class StatusCondition;
00500 typedef StatusCondition* StatusCondition_ptr;
00501 typedef ::CORBA::IDL_LO_var<StatusCondition> StatusCondition_var;
00502 typedef ::CORBA::IDL_UTSeq< StatusCondition_var > StatusConditionSeq;
00503
00504 class ReadCondition;
00505 typedef ReadCondition* ReadCondition_ptr;
00506 typedef ::CORBA::IDL_LO_var<ReadCondition> ReadCondition_var;
00507
00509 class Condition : public ::CORBA::LocalObject {
00510
00511 public:
00512
00514 virtual bool get_trigger_value() = 0;
00515 };
00516
00517
00518 class WaitSet : public ::CORBA::LocalObject {
00519
00520 public:
00521
00522 virtual ReturnCode_t
00523 wait(ConditionSeq& active_conditions, const Duration_t& timeout) = 0;
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537 };
00538
00542 class GuardCondition : public virtual Condition {
00543
00544 public:
00545
00547 virtual ReturnCode_t set_trigger_value(bool value) = 0;
00548 };
00549
00551 class StatusCondition : public virtual Condition {
00552
00553 public:
00554
00558 virtual StatusMask get_enabled_statuses() = 0;
00559
00562 virtual ReturnCode_t
00563 set_enabled_statuses(StatusMask mask) = 0;
00564
00567 virtual Entity_ptr get_entity() = 0;
00568 };
00569
00570
00571 typedef unsigned long SampleStateKind;
00572 const SampleStateKind READ_SAMPLE_STATE = 0x0001 << 0;
00573 const SampleStateKind NOT_READ_SAMPLE_STATE = 0x0001 << 1;
00574
00575
00576 typedef unsigned long SampleStateMask;
00577 const SampleStateMask ANY_SAMPLE_STATE = 0xffff;
00578
00579
00580 typedef unsigned long ViewStateKind;
00581 const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0;
00582 const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1;
00583
00584
00585 typedef unsigned long ViewStateMask;
00586 const ViewStateMask ANY_VIEW_STATE = 0xffff;
00587
00588
00589 typedef unsigned long InstanceStateKind;
00590 const InstanceStateKind ALIVE_INSTANCE_STATE = 0x0001 << 0;
00591 const InstanceStateKind NOT_ALIVE_DISPOSED_INSTANCE_STATE = 0x0001 << 1;
00592 const InstanceStateKind NOT_ALIVE_NO_WRITERS_INSTANCE_STATE = 0x0001 << 2;
00593
00594
00595 typedef unsigned long InstanceStateMask;
00596 const InstanceStateMask ANY_INSTANCE_STATE = 0xffff;
00597 const InstanceStateMask NOT_ALIVE_INSTANCE_STATE = 0x006;
00598
00599 class ReadCondition : public virtual Condition {
00600
00601 public:
00602
00603 virtual SampleStateMask get_sample_state_mask() = 0;
00604
00605 virtual ViewStateMask get_view_state_mask() = 0;
00606
00607 virtual InstanceStateMask get_instance_state_mask() = 0;
00608
00609 virtual DataReader_ptr get_datareader() = 0;
00610 };
00611
00612 class QueryCondition : public ReadCondition {
00613
00614 virtual const ::CORBA::String get_query_expression() = 0;
00615
00616 virtual ReturnCode_t
00617 get_query_parameters(StringSeq& query_parameters) = 0;
00618
00619 virtual ReturnCode_t
00620 set_query_parameters(const StringSeq& query_parameters) = 0;
00621
00622 };
00623
00624
00625
00626
00627
00628 const char *const USERDATA_QOS_POLICY_NAME = "UserData";
00629 const char *const DURABILITY_QOS_POLICY_NAME = "Durability";
00630 const char *const PRESENTATION_QOS_POLICY_NAME = "Presentation";
00631 const char *const DEADLINE_QOS_POLICY_NAME = "Deadline";
00632 const char *const LATENCYBUDGET_QOS_POLICY_NAME = "LatencyBudget";
00633 const char *const OWNERSHIP_QOS_POLICY_NAME = "Ownership";
00634 const char *const OWNERSHIPSTRENGTH_QOS_POLICY_NAME = "OwnershipStrength";
00635 const char *const LIVELINESS_QOS_POLICY_NAME = "Liveliness";
00636 const char *const TIMEBASEDFILTER_QOS_POLICY_NAME = "TimeBasedFilter";
00637 const char *const PARTITION_QOS_POLICY_NAME = "Partition";
00638 const char *const RELIABILITY_QOS_POLICY_NAME = "Reliability";
00639 const char *const DESTINATIONORDER_QOS_POLICY_NAME = "DestinationOrder";
00640
00641 const char *const HISTORY_QOS_POLICY_NAME = "History";
00642 const char *const RESOURCELIMITS_QOS_POLICY_NAME = "ResourceLimits";
00643 const char *const ENTITYFACTORY_QOS_POLICY_NAME = "EntityFactory";
00644 const char *const WRITERDATALIFECYCLE_QOS_POLICY_NAME = "WriterDataLifecycle";
00645 const char *const READERDATALIFECYCLE_QOS_POLICY_NAME = "ReaderDataLifecycle";
00646 const char *const TOPICDATA_QOS_POLICY_NAME = "TopicData";
00647 const char *const GROUPDATA_QOS_POLICY_NAME = "TransportPriority";
00648 const char *const LIFESPAN_QOS_POLICY_NAME = "Lifespan";
00649 const char *const DURABILITYSERVICE_POLICY_NAME = "DurabilityService";
00650
00651
00652 const QosPolicyId_t INVALID_QOS_POLICY_ID = 0;
00653 const QosPolicyId_t USERDATA_QOS_POLICY_ID = 1;
00654 const QosPolicyId_t DURABILITY_QOS_POLICY_ID = 2;
00655 const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = 3;
00656 const QosPolicyId_t DEADLINE_QOS_POLICY_ID = 4;
00657 const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = 5;
00658 const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = 6;
00659 const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = 7;
00660 const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = 8;
00661 const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = 9;
00662 const QosPolicyId_t PARTITION_QOS_POLICY_ID = 10;
00663 const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = 11;
00664 const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = 12;
00665 const QosPolicyId_t HISTORY_QOS_POLICY_ID = 13;
00666 const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = 14;
00667
00668 const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = 15;
00669 const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = 16;
00670 const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = 17;
00671 const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = 18;
00672 const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = 19;
00673
00674 const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = 20;
00675 const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = 21;
00676 const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = 22;
00677
00679 struct UserDataQosPolicy {
00680
00683 OctetSeq value;
00684 };
00685
00689 struct TopicDataQosPolicy {
00690
00693 OctetSeq value;
00694 };
00695
00696 struct GroupDataQosPolicy {
00697 OctetSeq value;
00698 };
00699
00700 struct TransportPriorityQosPolicy {
00701 long value;
00702 };
00703
00704 struct LifespanQosPolicy {
00705 Duration_t duration;
00706 };
00707
00709 enum DurabilityQosPolicyKind {
00710
00712 VOLATILE_DURABILITY_QOS,
00713
00718 TRANSIENT_LOCAL_DURABILITY_QOS,
00719
00724 TRANSIENT_DURABILITY_QOS,
00725
00728 PERSISTENT_DURABILITY_QOS
00729 };
00730
00732 struct DurabilityQosPolicy {
00733
00735 DurabilityQosPolicyKind kind;
00736 };
00737
00739 enum PresentationQosPolicyAccessScopeKind {
00740
00743 INSTANCE_PRESENTATION_QOS,
00744
00749 TOPIC_PRESENTATION_QOS,
00750
00753 GROUP_PRESENTATION_QOS
00754 };
00755
00759 struct PresentationQosPolicy {
00760
00762 PresentationQosPolicyAccessScopeKind access_scope;
00763
00765 bool coherent_access;
00766
00768 bool ordered_access;
00769 };
00770
00775 struct DeadlineQosPolicy {
00776
00778 Duration_t period;
00779 };
00780
00784 struct LatencyBudgetQosPolicy {
00785
00789 Duration_t duration;
00790 };
00791
00792 enum OwnershipQosPolicyKind {
00793 SHARED_OWNERSHIP_QOS,
00794 EXCLUSIVE_OWNERSHIP_QOS
00795 };
00796
00797 struct OwnershipQosPolicy {
00798 OwnershipQosPolicyKind kind;
00799 };
00800
00801 struct OwnershipStrengthQosPolicy {
00802 long value;
00803 };
00804
00806 enum LivelinessQosPolicyKind {
00807
00811 AUTOMATIC_LIVELINESS_QOS,
00812
00817 MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
00818
00822 MANUAL_BY_TOPIC_LIVELINESS_QOS
00823 };
00824
00829 struct LivelinessQosPolicy {
00830
00832 LivelinessQosPolicyKind kind;
00833
00835 Duration_t lease_duration;
00836 };
00837
00838 struct TimeBasedFilterQosPolicy {
00839
00840 Duration_t minimum_separation;
00841 };
00842
00843 struct PartitionQosPolicy {
00844
00845 StringSeq name;
00846 };
00847
00849 enum ReliabilityQosPolicyKind {
00850
00855 BEST_EFFORT_RELIABILITY_QOS,
00856
00858 RELIABLE_RELIABILITY_QOS
00859 };
00860
00865 struct ReliabilityQosPolicy {
00866
00868 ReliabilityQosPolicyKind kind;
00869
00871 Duration_t max_blocking_time;
00872 };
00873
00875 enum DestinationOrderQosPolicyKind {
00876
00881 BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
00882
00886 BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
00887 };
00888
00894 struct DestinationOrderQosPolicy {
00895
00897 DestinationOrderQosPolicyKind kind;
00898 };
00899
00900 enum HistoryQosPolicyKind {
00901 KEEP_LAST_HISTORY_QOS,
00902 KEEP_ALL_HISTORY_QOS
00903 };
00904
00905 struct HistoryQosPolicy {
00906
00907 HistoryQosPolicyKind kind;
00908 long depth;
00909 };
00910
00911 struct ResourceLimitsQosPolicy {
00912
00913 long max_samples;
00914 long max_instances;
00915 long max_samples_per_instance;
00916 };
00917
00919 struct EntityFactoryQosPolicy {
00920
00923 bool autoenable_created_entities;
00924 };
00925
00926 struct WriterDataLifecycleQosPolicy {
00927
00928 bool autodispose_unregistered_instances;
00929 };
00930
00931 struct ReaderDataLifecycleQosPolicy {
00932
00933 Duration_t autopurge_nowriter_samples_delay;
00934 Duration_t autopurge_disposed_samples_delay;
00935 };
00936
00940 struct DurabilityServiceQosPolicy {
00941
00943 Duration_t service_cleanup_delay;
00944
00946 HistoryQosPolicyKind history_kind;
00947
00949 long history_depth;
00950
00952 long max_samples;
00953
00955 long max_instances;
00956
00958 long max_samples_per_instance;
00959 };
00960
00962 struct DomainParticipantFactoryQos {
00966 EntityFactoryQosPolicy entity_factory;
00967 };
00968
00970 struct DomainParticipantQos {
00971
00973 UserDataQosPolicy user_data;
00974
00977 EntityFactoryQosPolicy entity_factory;
00978 };
00979
00981 struct TopicQos {
00982
00986 TopicDataQosPolicy topic_data;
00987
00989 DurabilityQosPolicy durability;
00990
00994 DurabilityServiceQosPolicy durability_service;
00995
00999 DeadlineQosPolicy deadline;
01000
01003 LatencyBudgetQosPolicy latency_budget;
01004
01008 LivelinessQosPolicy liveliness;
01009
01014 ReliabilityQosPolicy reliability;
01015
01021 DestinationOrderQosPolicy destination_order;
01022
01023 HistoryQosPolicy history;
01024
01025 ResourceLimitsQosPolicy resource_limits;
01026
01027 TransportPriorityQosPolicy transport_priority;
01028
01029 LifespanQosPolicy lifespan;
01030
01031 OwnershipQosPolicy ownership;
01032 };
01033
01034 struct DataWriterQos {
01035 DurabilityQosPolicy durability;
01036 DurabilityServiceQosPolicy durability_service;
01037 DeadlineQosPolicy deadline;
01038 LatencyBudgetQosPolicy latency_budget;
01039 LivelinessQosPolicy liveliness;
01040 ReliabilityQosPolicy reliability;
01041 DestinationOrderQosPolicy destination_order;
01042 HistoryQosPolicy history;
01043 ResourceLimitsQosPolicy resource_limits;
01044 TransportPriorityQosPolicy transport_priority;
01045 LifespanQosPolicy lifespan;
01046 UserDataQosPolicy user_data;
01047 OwnershipQosPolicy ownership;
01048 OwnershipStrengthQosPolicy ownership_strength;
01049 WriterDataLifecycleQosPolicy writer_data_lifecycle;
01050 };
01051
01052 struct PublisherQos {
01053
01057 PresentationQosPolicy presentation;
01058
01059 PartitionQosPolicy partition;
01060 GroupDataQosPolicy group_data;
01061 EntityFactoryQosPolicy entity_factory;
01062 };
01063
01065 struct DataReaderQos {
01066
01068 DurabilityQosPolicy durability;
01069
01073 DeadlineQosPolicy deadline;
01074
01077 LatencyBudgetQosPolicy latency_budget;
01078
01082 LivelinessQosPolicy liveliness;
01083
01088 ReliabilityQosPolicy reliability;
01089
01090 DestinationOrderQosPolicy destination_order;
01091
01092 HistoryQosPolicy history;
01093
01094 ResourceLimitsQosPolicy resource_limits;
01095
01097 UserDataQosPolicy user_data;
01098
01099 OwnershipQosPolicy ownership;
01100
01101 TimeBasedFilterQosPolicy time_based_filter;
01102
01103 ReaderDataLifecycleQosPolicy reader_data_lifecycle;
01104 };
01105
01107 struct SubscriberQos {
01108
01112 PresentationQosPolicy presentation;
01113
01114 PartitionQosPolicy partition;
01115
01116 GroupDataQosPolicy group_data;
01117
01120 EntityFactoryQosPolicy entity_factory;
01121 };
01122
01123
01124
01126 struct ParticipantBuiltinTopicData {
01127 BuiltinTopicKey_t key;
01128 UserDataQosPolicy user_data;
01129 };
01130
01132 struct TopicBuiltinTopicData {
01133 BuiltinTopicKey_t key;
01134 char* name;
01135 char* type_name;
01136 DurabilityQosPolicy durability;
01137 DurabilityServiceQosPolicy durability_service;
01138 DeadlineQosPolicy deadline;
01139 LatencyBudgetQosPolicy latency_budget;
01140 LivelinessQosPolicy liveliness;
01141 ReliabilityQosPolicy reliability;
01142 TransportPriorityQosPolicy transport_priority;
01143 LifespanQosPolicy lifespan;
01144 DestinationOrderQosPolicy destination_order;
01145 HistoryQosPolicy history;
01146 ResourceLimitsQosPolicy resource_limits;
01147 OwnershipQosPolicy ownership;
01148 TopicDataQosPolicy topic_data;
01149 };
01150
01152 struct PublicationBuiltinTopicData {
01153 BuiltinTopicKey_t key;
01154 BuiltinTopicKey_t participant_key;
01155 char* topic_name;
01156 char* type_name;
01157 DurabilityQosPolicy durability;
01158 DurabilityServiceQosPolicy durability_service;
01159 DeadlineQosPolicy deadline;
01160 LatencyBudgetQosPolicy latency_budget;
01161 LivelinessQosPolicy liveliness;
01162 ReliabilityQosPolicy reliability;
01163 LifespanQosPolicy lifespan;
01164 UserDataQosPolicy user_data;
01165 OwnershipQosPolicy ownership;
01166 OwnershipStrengthQosPolicy ownership_strength;
01167 DestinationOrderQosPolicy destination_order;
01168 PresentationQosPolicy presentation;
01169 PartitionQosPolicy partition;
01170 TopicDataQosPolicy topic_data;
01171 GroupDataQosPolicy group_data;
01172 };
01173
01175 struct SubscriptionBuiltinTopicData {
01176 BuiltinTopicKey_t key;
01177 BuiltinTopicKey_t participant_key;
01178 char* topic_name;
01179 char* type_name;
01180 DurabilityQosPolicy durability;
01181 DeadlineQosPolicy deadline;
01182 LatencyBudgetQosPolicy latency_budget;
01183 LivelinessQosPolicy liveliness;
01184 ReliabilityQosPolicy reliability;
01185 OwnershipQosPolicy ownership;
01186 DestinationOrderQosPolicy destination_order;
01187 UserDataQosPolicy user_data;
01188 TimeBasedFilterQosPolicy time_based_filter;
01189 PresentationQosPolicy presentation;
01190 PartitionQosPolicy partition;
01191 TopicDataQosPolicy topic_data;
01192 GroupDataQosPolicy group_data;
01193 };
01194
01195
01196
01197
01203 class Entity : public virtual ::CORBA::LocalObject {
01204
01205 public:
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01220 virtual ReturnCode_t enable() = 0;
01221
01227 virtual StatusCondition_ptr get_statuscondition() = 0;
01228
01234 virtual StatusMask get_status_changes() = 0;
01235
01237 virtual InstanceHandle_t get_instance_handle() = 0;
01238
01239 };
01240
01241
01242
01254 class DomainParticipant : public virtual Entity {
01255
01256 public:
01257
01258
01259
01261 virtual Publisher_ptr
01262 create_publisher(const PublisherQos& qos,
01263 PublisherListener_ptr a_listener,
01264 StatusMask mask) = 0;
01265
01267 virtual ReturnCode_t
01268 delete_publisher(Publisher_ptr p) = 0;
01269
01271 virtual Subscriber_ptr
01272 create_subscriber(const SubscriberQos& qos,
01273 SubscriberListener_ptr a_listener,
01274 StatusMask mask) = 0;
01275
01277 virtual ReturnCode_t
01278 delete_subscriber(Subscriber_ptr s) = 0;
01279
01281 virtual Subscriber_ptr get_builtin_subscriber() = 0;
01282
01284 virtual Topic_ptr
01285 create_topic(const char* topic_name,
01286 const char* type_name,
01287 const TopicQos& qos,
01288 TopicListener_ptr a_listener,
01289 StatusMask mask) = 0;
01290
01292 virtual ReturnCode_t delete_topic(Topic_ptr a_topic) = 0;
01293
01295 virtual Topic_ptr
01296 find_topic(const char* topic_name,
01297 Duration_t& timeout) = 0;
01298
01300 virtual TopicDescription_ptr lookup_topicdescription(const char* name) = 0;
01301
01303 virtual ContentFilteredTopic_ptr
01304 create_contentfilteredtopic(const char* name,
01305 Topic_ptr related_topic,
01306 const char* filter_expression,
01307 const StringSeq& expression_parameters) = 0;
01308
01310 virtual ReturnCode_t delete_contentfilteredtopic(
01311 ContentFilteredTopic_ptr a_contentfilteredtopic) = 0;
01312
01314 virtual MultiTopic_ptr
01315 create_multitopic(const char* name,
01316 const char* type_name,
01317 const char* subscription_expression,
01318 const StringSeq& expression_parameters) = 0;
01319
01321 virtual ReturnCode_t delete_multitopic(MultiTopic_ptr a_multitopic) = 0;
01322
01326 virtual ReturnCode_t delete_contained_entities() = 0;
01327
01329 virtual ReturnCode_t set_qos(const DomainParticipantQos& qos) = 0;
01330
01332 virtual ReturnCode_t get_qos(DomainParticipantQos& qos) = 0;
01333
01335 virtual ReturnCode_t set_listener(DomainParticipantListener_ptr a_listener,
01336 StatusMask mask) = 0;
01337
01339 virtual DomainParticipantListener_ptr get_listener() = 0;
01340
01342 virtual ReturnCode_t ignore_participant(InstanceHandle_t handle) = 0;
01343
01345 virtual ReturnCode_t ignore_topic(InstanceHandle_t handle) = 0;
01346
01348 virtual ReturnCode_t ignore_publication(InstanceHandle_t handle) = 0;
01349
01351 virtual ReturnCode_t ignore_subscription(InstanceHandle_t handle) = 0;
01352
01354 virtual DomainId_t get_domain_id() = 0;
01355
01360 virtual ReturnCode_t assert_liveliness() = 0;
01361
01363 virtual ReturnCode_t set_default_publisher_qos(const PublisherQos& qos) = 0;
01364
01366 virtual ReturnCode_t get_default_publisher_qos(PublisherQos& qos) = 0;
01367
01369 virtual ReturnCode_t set_default_subscriber_qos(const SubscriberQos& qos) = 0;
01370
01372 virtual ReturnCode_t get_default_subscriber_qos(SubscriberQos& qos) = 0;
01373
01375 virtual ReturnCode_t set_default_topic_qos(const TopicQos& qos) = 0;
01376
01378 virtual ReturnCode_t get_default_topic_qos(TopicQos& qos) = 0;
01379
01384 virtual ReturnCode_t
01385 get_discovered_participants(InstanceHandleSeq& participant_handles) = 0;
01386
01390 virtual ReturnCode_t
01391 get_discovered_participant_data(ParticipantBuiltinTopicData& participant_data,
01392 InstanceHandle_t participant_handle) = 0;
01393
01397 virtual ReturnCode_t
01398 get_discovered_topics(InstanceHandleSeq& topic_handles) = 0;
01399
01401 virtual ReturnCode_t
01402 get_discovered_topic_data(TopicBuiltinTopicData& topic_data,
01403 InstanceHandle_t topic_handle) = 0;
01404
01408 virtual Boolean contains_entity(InstanceHandle_t a_handle) = 0;
01409
01414 virtual ReturnCode_t get_current_time(Time_t& current_time) = 0;
01415
01416 };
01417
01420 class DomainParticipantFactory : public ::CORBA::LocalObject {
01421
01422 public:
01423
01424
01426 virtual DomainParticipant_ptr
01427 create_participant(DomainId_t domain_id,
01428 const DomainParticipantQos& qos,
01429 DomainParticipantListener_ptr a_listener,
01430 StatusMask mask) = 0;
01431
01436 virtual ReturnCode_t
01437 delete_participant(DomainParticipant_ptr a_participant) = 0;
01438
01443 virtual DomainParticipant_ptr
01444 lookup_participant(DomainId_t domain_id) = 0;
01445
01447 virtual ReturnCode_t
01448 set_default_participant_qos(const DomainParticipantQos& qos) = 0;
01449
01451 virtual ReturnCode_t
01452 get_default_participant_qos(DomainParticipantQos& qos) = 0;
01453
01455 virtual ReturnCode_t
01456 set_qos(const DomainParticipantFactoryQos& qos) = 0;
01457
01459 virtual ReturnCode_t
01460 get_qos(DomainParticipantFactoryQos& qos) = 0;
01461
01462 };
01463
01466 class TypeSupport : public ::CORBA::LocalObject {
01467
01468 public:
01469
01472 virtual ReturnCode_t
01473 register_type(DomainParticipant_ptr domain, const char* type_name) = 0;
01474
01476 virtual const char* get_type_name() = 0;
01477 };
01478
01479
01480
01481
01482
01484 class TopicDescription : public virtual ::CORBA::LocalObject {
01485
01486 public:
01487
01489 virtual const char* get_type_name() = 0;
01490
01492 virtual const char* get_name() = 0;
01493
01495 virtual DomainParticipant_ptr get_participant() = 0;
01496 };
01497
01502 class Topic : public virtual Entity, public virtual TopicDescription {
01503
01504 public:
01505
01507 virtual ReturnCode_t set_qos(const TopicQos& qos) = 0;
01508
01510 virtual ReturnCode_t get_qos(TopicQos& qos) = 0;
01511
01513 virtual ReturnCode_t
01514 set_listener(TopicListener_ptr a_listener,
01515 StatusMask mask) = 0;
01516
01518 virtual TopicListener_ptr get_listener() = 0;
01519
01522 virtual ReturnCode_t
01523 get_inconsistent_topic_status(InconsistentTopicStatus& a_status) = 0;
01524
01525 };
01526
01530 class ContentFilteredTopic : public virtual TopicDescription {
01531
01532 public:
01533
01535 virtual const char* get_filter_expression() = 0;
01536
01538 virtual ReturnCode_t get_expression_parameters(StringSeq&) = 0;
01539
01541 virtual ReturnCode_t
01542 set_expression_parameters(const StringSeq& expression_parameters) = 0;
01543
01545 virtual Topic_ptr get_related_topic() = 0;
01546
01547 };
01548
01552 class MultiTopic : public virtual TopicDescription {
01553
01554 public:
01555
01557 virtual const char* get_subscription_expression() = 0;
01558
01560 virtual ReturnCode_t get_expression_parameters(StringSeq&) = 0;
01561
01563 virtual ReturnCode_t
01564 set_expression_parameters(const StringSeq& expression_parameters) = 0;
01565 };
01566
01567
01568
01571 class Publisher : public virtual Entity {
01572
01573 public:
01574
01576 virtual DataWriter_ptr create_datawriter(Topic_ptr a_topic,
01577 const DataWriterQos& qos,
01578 DataWriterListener_ptr a_listener,
01579 StatusMask mask) = 0;
01580
01581 virtual ReturnCode_t delete_datawriter(DataWriter_ptr a_datawriter) = 0;
01582
01583 virtual DataWriter_ptr lookup_datawriter(const char* topic_name) = 0;
01584
01585
01586
01587
01588
01589
01591 virtual ReturnCode_t set_qos(const PublisherQos& qos) = 0;
01592
01594 virtual ReturnCode_t get_qos(PublisherQos& qos) = 0;
01595
01597 virtual ReturnCode_t set_listener(PublisherListener_ptr a_listener,
01598 StatusMask mask) = 0;
01599
01601 virtual PublisherListener_ptr get_listener() = 0;
01602
01603
01604
01605
01606
01607
01608
01609
01610
01611 virtual ReturnCode_t begin_coherent_changes() = 0;
01612
01613 virtual ReturnCode_t end_coherent_changes() = 0;
01614
01615
01616
01617
01618
01619
01620
01621
01622
01623 virtual DomainParticipant_ptr get_participant() = 0;
01624
01625 virtual ReturnCode_t
01626 set_default_datawriter_qos(const DataWriterQos& qos) = 0;
01627
01628 virtual ReturnCode_t
01629 get_default_datawriter_qos(DataWriterQos& qos) = 0;
01630
01631
01632
01633
01634
01635
01636
01637 };
01638
01641 class DataWriter : public virtual Entity {
01642
01643 public:
01644
01645
01646
01647
01648
01649
01650
01651
01652
01653
01654
01655
01656
01657
01658
01659
01660
01661
01662
01663
01664
01665
01666
01667
01668
01669
01670
01671
01672
01673
01674
01675
01676
01677
01678
01679
01680
01681
01682
01683
01684
01686 virtual ReturnCode_t set_qos(const DataWriterQos& qos) = 0;
01687
01689 virtual ReturnCode_t get_qos(DataWriterQos& qos) = 0;
01690
01692 virtual ReturnCode_t
01693 set_listener(DataWriterListener_ptr a_listener, StatusMask mask) = 0;
01694
01696 virtual DataWriterListener_ptr get_listener() = 0;
01697
01699 virtual Topic_ptr get_topic() = 0;
01700
01702 virtual Publisher_ptr get_publisher() = 0;
01703
01704
01705
01706
01707
01708
01709
01710
01711
01712
01713
01714
01715
01716
01717
01718
01719
01720
01721
01722
01723
01724
01725
01726
01727
01728
01729 };
01730
01731
01732
01733
01739 class Subscriber : public virtual Entity {
01740
01741 public:
01742
01743
01744
01746 virtual ReturnCode_t set_listener(SubscriberListener_ptr a_listener,
01747 StatusMask mask) = 0;
01748
01750 virtual SubscriberListener_ptr get_listener() = 0;
01751
01753 virtual ReturnCode_t set_qos(const SubscriberQos& qos) = 0;
01754
01756 virtual ReturnCode_t get_qos(SubscriberQos& qos) = 0;
01757
01758
01759
01761 virtual DataReader_ptr
01762 create_datareader(TopicDescription_ptr a_topic,
01763 const DataReaderQos& qos,
01764 DataReaderListener_ptr a_listener,
01765 StatusMask mask) = 0;
01766
01772 virtual ReturnCode_t delete_datareader(DataReader_ptr a_datareader) = 0;
01773
01778 virtual DataReader_ptr lookup_datareader(const char* topic_name) = 0;
01779
01785 virtual ReturnCode_t begin_access() = 0;
01786
01792 virtual ReturnCode_t end_access() = 0;
01793
01797 virtual ReturnCode_t
01798 get_datareaders(
01799 ::DDS::DataReaderSeq*& readers,
01800 SampleStateMask sample_states,
01801 ViewStateMask view_states,
01802 InstanceStateMask instance_states) = 0;
01803
01804
01810 virtual ReturnCode_t notify_datareaders() = 0;
01811
01813 virtual DomainParticipant_ptr get_participant() = 0;
01814
01825 virtual ReturnCode_t delete_contained_entities() = 0;
01826
01828 virtual ReturnCode_t set_default_datareader_qos(const DataReaderQos& qos) = 0;
01829
01831 virtual ReturnCode_t get_default_datareader_qos(DataReaderQos& qos) = 0;
01832
01837 virtual ReturnCode_t
01838 copy_from_topic_qos(DataReaderQos& a_datareader_qos,
01839 const TopicQos& a_topic_qos) = 0;
01840 };
01841
01844 class DataReader : public virtual Entity {
01845
01846 public:
01847
01848
01849
01850
01851
01852
01853
01854
01855
01856
01857
01858
01859
01860
01861
01862
01863
01864
01865
01866
01867
01868
01869
01870
01871
01872
01873
01874
01875
01876
01877
01878
01879
01880
01881
01882
01883
01884
01885
01886
01887
01888
01889
01890
01891
01892
01893
01894
01895
01896
01897
01898
01899
01900
01901
01902
01903
01904
01905
01906
01907
01908
01909
01910
01911
01912
01913
01914
01915
01916
01917
01918
01919
01920
01921
01922
01923
01924
01925
01926
01927
01928
01929
01930
01931
01932
01933
01934
01935
01936
01937
01938
01939
01940
01941
01942
01943
01944
01945 virtual ReadCondition_ptr
01946 create_readcondition(SampleStateMask sample_states,
01947 ViewStateMask view_states,
01948 InstanceStateMask instance_states) = 0;
01949
01950
01951
01952
01953
01954
01955
01956
01957
01958
01959
01960
01961
01962
01963
01964
01965
01967 virtual ReturnCode_t set_qos(const DataReaderQos& qos) = 0;
01968
01970 virtual ReturnCode_t get_qos(DataReaderQos& qos) = 0;
01971
01973 virtual ReturnCode_t set_listener(DataReaderListener_ptr a_listener, StatusMask mask) = 0;
01974
01976 virtual DataReaderListener_ptr get_listener() = 0;
01977
01979 virtual TopicDescription_ptr get_topicdescription() = 0;
01980
01982 virtual Subscriber_ptr get_subscriber() = 0;
01983
01985 virtual ReturnCode_t
01986 get_sample_rejected_status(SampleRejectedStatus& status) = 0;
01987
01989 virtual ReturnCode_t
01990 get_liveliness_changed_status(LivelinessChangedStatus& status) = 0;
01991
01993 virtual ReturnCode_t
01994 get_requested_deadline_missed_status(RequestedDeadlineMissedStatus& status) = 0;
01995
01997 virtual ReturnCode_t
01998 get_requested_incompatible_qos_status(RequestedIncompatibleQosStatus& status) = 0;
01999
02001 virtual ReturnCode_t
02002 get_subscription_matched_status(SubscriptionMatchedStatus& status) = 0;
02003
02005 virtual ReturnCode_t
02006 get_sample_lost_status(SampleLostStatus& status) = 0;
02007
02010 virtual ReturnCode_t
02011 wait_for_historical_data(const Duration_t& max_wait) = 0;
02012
02016 virtual ReturnCode_t
02017 get_matched_publications(InstanceHandleSeq& publication_handles) = 0;
02018
02021 virtual ReturnCode_t
02022 get_matched_publication_data(PublicationBuiltinTopicData& publication_data,
02023 InstanceHandle_t publication_handle) = 0;
02024
02025 };
02026
02028 struct SampleInfo {
02029
02031 SampleStateKind sample_state;
02032
02034 ViewStateKind view_state;
02035
02037 InstanceStateKind instance_state;
02038
02041 Time_t source_timestamp;
02042
02043 InstanceHandle_t instance_handle;
02044 InstanceHandle_t publication_handle;
02045
02046
02047 long disposed_generation_count;
02048 long no_writers_generation_count;
02049 long sample_rank;
02050 long generation_rank;
02051
02053 long absolute_generation_rank;
02054
02058 bool valid_data;
02059 };
02060
02061 typedef ::CORBA::IDL_UTSeq<SampleInfo> SampleInfoSeq;
02062
02063 };
02064
02065
02066
02067
02068
02069
02070
02071
02072
02073
02074
02075
02076
02077
02078
02079
02080
02081
02082
02083
02084
02085
02086
02087
02088
02089
02090
02091
02092
02093
02094
02095
02096
02097
02098
02099
02100
02101
02102
02103
02104
02105
02106
02107
02108
02109
02110
02111
02112
02113
02114
02115
02116
02117
02118
02119
02120
02121
02122
02123
02124
02125
02126
02127
02128
02129
02130
02131
02132
02133
02134
02135
02136
02137
02138
02139
02140
02141
02142
02143
02144
02145
02146
02147
02148
02149
02150
02151
02152
02153
02154
02155
02156
02157
02158
02159
02160
02161
02162
02163
02164
02165
02166
02167
02168
02169
02170
02171
02172
02173
02174
02175
02176
02177
02178
02179
02180 #endif
02181