diff options
Diffstat (limited to 'modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl')
-rw-r--r-- | modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl | 1206 |
1 files changed, 1206 insertions, 0 deletions
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl new file mode 100644 index 00000000000..14a695d5c37 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl @@ -0,0 +1,1206 @@ +// $Id$ + +#ifndef DDS_RFT2_DCPS_IDL +#define DDS_RFT2_DCPS_IDL + +#define DOMAINID_TYPE_NATIVE long +#define HANDLE_TYPE_NATIVE long +#define HANDLE_NIL_NATIVE 0 +#define BUILTIN_TOPIC_KEY_TYPE_NATIVE long + +#define TheParticipantFactory +#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 + +#include "tao/StringSeq.pidl" + +module DDS { + struct NativeInstanceHandle_t { + octet value[16]; + unsigned long length; + }; + typedef long DomainId_t; + typedef NativeInstanceHandle_t InstanceHandle_t; + struct BuiltinTopicKey_t { + long value[3]; + }; + + typedef sequence<InstanceHandle_t> InstanceHandleSeq; + + typedef long ReturnCode_t; + typedef long QosPolicyId_t; + typedef sequence<string> StringSeq; + + struct Duration_t { + long sec; + unsigned long nanosec; + }; + + struct Time_t { + long sec; + unsigned long nanosec; + }; + + // ---------------------------------------------------------------------- + // Pre-defined values + // ---------------------------------------------------------------------- + //const InstanceHandle_t HANDLE_NIL = 0; + + const long LENGTH_UNLIMITED = -1; + + const long DURATION_INFINITE_SEC = 0x7fffffff; + const unsigned long DURATION_INFINITE_NSEC = 0x7fffffff; + + const long DURATION_ZERO_SEC = 0; + const unsigned long DURATION_ZERO_NSEC = 0; + + const long TIME_INVALID_SEC = -1; + const unsigned long TIME_INVALID_NSEC = 0xffffffff; + + // ---------------------------------------------------------------------- + // 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 QosPolicyCount { + QosPolicyId_t policy_id; + long count; + }; + + typedef sequence<QosPolicyCount> QosPolicyCountSeq; + + 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 + // ---------------------------------------------------------------------- + + interface Listener; + interface Entity; + interface TopicDescription; + interface Topic; + interface ContentFilteredTopic; + interface MultiTopic; + interface DataWriter; + interface DataReader; + interface Subscriber; + interface Publisher; + + typedef sequence<DataReader> DataReaderSeq; + + interface Listener {}; + + interface TopicListener : Listener { + void on_inconsistent_topic(in Topic the_topic, + in InconsistentTopicStatus status); + }; + + interface DataWriterListener : Listener { + void on_offered_deadline_missed( + in DataWriter writer, + in OfferedDeadlineMissedStatus status); + void on_offered_incompatible_qos( + in DataWriter writer, + in OfferedIncompatibleQosStatus status); + void on_liveliness_lost( + in DataWriter writer, + in LivelinessLostStatus status); + void on_publication_matched( + in DataWriter writer, + in PublicationMatchedStatus status); + }; + + interface PublisherListener : DataWriterListener { + }; + + interface DataReaderListener : Listener { + void on_requested_deadline_missed( + in DataReader the_reader, + in RequestedDeadlineMissedStatus status); + void on_requested_incompatible_qos( + in DataReader the_reader, + in RequestedIncompatibleQosStatus status); + void on_sample_rejected( + in DataReader the_reader, + in SampleRejectedStatus status); + void on_liveliness_changed( + in DataReader the_reader, + in LivelinessChangedStatus status); + void on_data_available( + in DataReader the_reader); + void on_subscription_matched( + in DataReader the_reader, + in SubscriptionMatchedStatus status); + void on_sample_lost( + in DataReader the_reader, + in SampleLostStatus status); + }; + + interface SubscriberListener : DataReaderListener { + void on_data_on_readers( + in Subscriber the_subscriber); + }; + + + interface DomainParticipantListener : TopicListener, + PublisherListener, + SubscriberListener { + }; + + + // ---------------------------------------------------------------------- + // Conditions + // ---------------------------------------------------------------------- + + interface Condition { + boolean get_trigger_value(); + }; + + typedef sequence<Condition> ConditionSeq; + + interface WaitSet { + 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); + }; + + interface GuardCondition : Condition { + ReturnCode_t set_trigger_value( + in boolean value); + }; + + interface StatusCondition : Condition { + StatusMask get_enabled_statuses(); + ReturnCode_t set_enabled_statuses( + in StatusMask mask); + Entity get_entity(); + }; + + // Sample states to support reads + typedef unsigned long SampleStateKind; + const SampleStateKind READ_SAMPLE_STATE = 0x0001 << 0; + const SampleStateKind NOT_READ_SAMPLE_STATE = 0x0001 << 1; + + // This is a bit-mask SampleStateKind + typedef unsigned long SampleStateMask; + const SampleStateMask ANY_SAMPLE_STATE = 0xffff; + + // View states to support reads + typedef unsigned long ViewStateKind; + const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0; + const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1; + + // This is a bit-mask ViewStateKind + typedef unsigned long ViewStateMask; + const ViewStateMask ANY_VIEW_STATE = 0xffff; + + // Instance states to support reads + typedef unsigned long InstanceStateKind; + const InstanceStateKind ALIVE_INSTANCE_STATE = 0x0001 << 0; + const InstanceStateKind NOT_ALIVE_DISPOSED_INSTANCE_STATE = 0x0001 << 1; + const InstanceStateKind NOT_ALIVE_NO_WRITERS_INSTANCE_STATE = 0x0001 << 2; + + // This is a bit-mask InstanceStateKind + typedef unsigned long InstanceStateMask; + const InstanceStateMask ANY_INSTANCE_STATE = 0xffff; + const InstanceStateMask NOT_ALIVE_INSTANCE_STATE = 0x006; + + + interface ReadCondition : Condition { + SampleStateMask get_sample_state_mask(); + ViewStateMask get_view_state_mask(); + InstanceStateMask get_instance_state_mask(); + DataReader get_datareader(); + }; + + interface QueryCondition : ReadCondition { + string get_query_expression(); + ReturnCode_t get_query_parameters( + inout StringSeq query_parameters); + ReturnCode_t set_query_parameters( + in StringSeq query_parameters); + }; + + // ---------------------------------------------------------------------- + // 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 = "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; + + typedef sequence<octet> OctetSeq; + struct UserDataQosPolicy { + OctetSeq value; + }; + + struct TopicDataQosPolicy { + OctetSeq value; + }; + + struct GroupDataQosPolicy { + OctetSeq value; + }; + + struct TransportPriorityQosPolicy { + long value; + }; + + struct LifespanQosPolicy { + Duration_t duration; + }; + + enum DurabilityQosPolicyKind { + VOLATILE_DURABILITY_QOS, + TRANSIENT_LOCAL_DURABILITY_QOS, + TRANSIENT_DURABILITY_QOS, + PERSISTENT_DURABILITY_QOS + }; + struct DurabilityQosPolicy { + DurabilityQosPolicyKind kind; + }; + + enum PresentationQosPolicyAccessScopeKind { + INSTANCE_PRESENTATION_QOS, + TOPIC_PRESENTATION_QOS, + GROUP_PRESENTATION_QOS + }; + struct PresentationQosPolicy { + PresentationQosPolicyAccessScopeKind access_scope; + boolean coherent_access; + boolean ordered_access; + }; + + struct DeadlineQosPolicy { + Duration_t period; + }; + + struct LatencyBudgetQosPolicy { + Duration_t duration; + }; + + enum OwnershipQosPolicyKind { + SHARED_OWNERSHIP_QOS, + EXCLUSIVE_OWNERSHIP_QOS + }; + struct OwnershipQosPolicy { + OwnershipQosPolicyKind kind; + }; + + struct OwnershipStrengthQosPolicy { + long value; + }; + + enum LivelinessQosPolicyKind { + AUTOMATIC_LIVELINESS_QOS, + MANUAL_BY_PARTICIPANT_LIVELINESS_QOS, + MANUAL_BY_TOPIC_LIVELINESS_QOS + }; + + struct LivelinessQosPolicy { + LivelinessQosPolicyKind kind; + Duration_t lease_duration; + }; + + struct TimeBasedFilterQosPolicy { + Duration_t minimum_separation; + }; + + struct PartitionQosPolicy { + StringSeq name; + }; + + enum ReliabilityQosPolicyKind { + BEST_EFFORT_RELIABILITY_QOS, + RELIABLE_RELIABILITY_QOS + }; + + struct ReliabilityQosPolicy { + ReliabilityQosPolicyKind kind; + Duration_t max_blocking_time; + }; + + enum DestinationOrderQosPolicyKind { + BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, + BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS + }; + struct DestinationOrderQosPolicy { + DestinationOrderQosPolicyKind kind; + }; + + enum HistoryQosPolicyKind { + KEEP_LAST_HISTORY_QOS, + KEEP_ALL_HISTORY_QOS + }; + struct HistoryQosPolicy { + HistoryQosPolicyKind kind; + long depth; + }; + + struct ResourceLimitsQosPolicy { + long max_samples; + long max_instances; + long max_samples_per_instance; + }; + + struct EntityFactoryQosPolicy { + boolean autoenable_created_entities; + }; + + struct WriterDataLifecycleQosPolicy { + boolean autodispose_unregistered_instances; + }; + + struct ReaderDataLifecycleQosPolicy { + Duration_t autopurge_nowriter_samples_delay; + Duration_t autopurge_disposed_samples_delay; + }; + + struct DurabilityServiceQosPolicy { + Duration_t service_cleanup_delay; + HistoryQosPolicyKind history_kind; + long history_depth; + long max_samples; + long max_instances; + long max_samples_per_instance; + }; + + struct DomainParticipantFactoryQos { + EntityFactoryQosPolicy entity_factory; + }; + + struct DomainParticipantQos { + UserDataQosPolicy user_data; + EntityFactoryQosPolicy entity_factory; + }; + + struct TopicQos { + TopicDataQosPolicy topic_data; + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + TransportPriorityQosPolicy transport_priority; + LifespanQosPolicy lifespan; + + OwnershipQosPolicy ownership; + }; + + struct DataWriterQos { + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + TransportPriorityQosPolicy transport_priority; + LifespanQosPolicy lifespan; + + UserDataQosPolicy user_data; + OwnershipQosPolicy ownership; + OwnershipStrengthQosPolicy ownership_strength; + WriterDataLifecycleQosPolicy writer_data_lifecycle; + }; + + struct PublisherQos { + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + GroupDataQosPolicy group_data; + EntityFactoryQosPolicy entity_factory; + }; + + struct DataReaderQos { + DurabilityQosPolicy durability; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + + UserDataQosPolicy user_data; + OwnershipQosPolicy ownership; + TimeBasedFilterQosPolicy time_based_filter; + ReaderDataLifecycleQosPolicy reader_data_lifecycle; + }; + + struct SubscriberQos { + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + GroupDataQosPolicy group_data; + EntityFactoryQosPolicy entity_factory; + }; + + // ---------------------------------------------------------------------- + + struct ParticipantBuiltinTopicData { + BuiltinTopicKey_t key; + UserDataQosPolicy user_data; + }; + + struct TopicBuiltinTopicData { + BuiltinTopicKey_t key; + string name; + string type_name; + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + TransportPriorityQosPolicy transport_priority; + LifespanQosPolicy lifespan; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + OwnershipQosPolicy ownership; + TopicDataQosPolicy topic_data; + }; + + struct PublicationBuiltinTopicData { + BuiltinTopicKey_t key; + BuiltinTopicKey_t participant_key; + string topic_name; + string type_name; + + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + LifespanQosPolicy lifespan; + UserDataQosPolicy user_data; + OwnershipQosPolicy ownership; + OwnershipStrengthQosPolicy ownership_strength; + DestinationOrderQosPolicy destination_order; + + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + TopicDataQosPolicy topic_data; + GroupDataQosPolicy group_data; + }; + + struct SubscriptionBuiltinTopicData { + BuiltinTopicKey_t key; + BuiltinTopicKey_t participant_key; + string topic_name; + string type_name; + + DurabilityQosPolicy durability; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + OwnershipQosPolicy ownership; + DestinationOrderQosPolicy destination_order; + UserDataQosPolicy user_data; + TimeBasedFilterQosPolicy time_based_filter; + + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + TopicDataQosPolicy topic_data; + GroupDataQosPolicy group_data; + }; + + // ---------------------------------------------------------------------- + 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(); + }; + + // ---------------------------------------------------------------------- + interface DomainParticipant : Entity { + // Factory interfaces + Publisher create_publisher( + in PublisherQos qos, + in PublisherListener a_listener, + in StatusMask mask); + ReturnCode_t delete_publisher( + in Publisher p); + + Subscriber create_subscriber( + in SubscriberQos qos, + in SubscriberListener a_listener, + in StatusMask mask); + ReturnCode_t delete_subscriber( + in Subscriber s); + Subscriber get_builtin_subscriber(); + + Topic create_topic( + in string topic_name, + in string type_name, + in TopicQos qos, + in TopicListener a_listener, + in StatusMask mask); + + ReturnCode_t delete_topic( + in Topic a_topic); + + Topic find_topic( + in string topic_name, + in Duration_t timeout); + TopicDescription lookup_topicdescription( + in string name); + + ContentFilteredTopic create_contentfilteredtopic( + in string name, + in Topic related_topic, + in string filter_expression, + in StringSeq expression_parameters); + + ReturnCode_t delete_contentfilteredtopic( + in ContentFilteredTopic a_contentfilteredtopic); + + MultiTopic create_multitopic( + in string name, + in string type_name, + in string subscription_expression, + in StringSeq expression_parameters); + + ReturnCode_t delete_multitopic( + in MultiTopic a_multitopic); + + ReturnCode_t delete_contained_entities(); + + ReturnCode_t set_qos( + in DomainParticipantQos qos); + ReturnCode_t get_qos( + inout DomainParticipantQos qos); + + ReturnCode_t set_listener( + in DomainParticipantListener a_listener, + in StatusMask mask); + DomainParticipantListener get_listener(); + + ReturnCode_t ignore_participant( + in InstanceHandle_t handle); + ReturnCode_t ignore_topic( + in InstanceHandle_t handle); + ReturnCode_t ignore_publication( + in InstanceHandle_t handle); + ReturnCode_t ignore_subscription( + in InstanceHandle_t handle); + + DomainId_t get_domain_id(); + ReturnCode_t assert_liveliness(); + + ReturnCode_t set_default_publisher_qos( + in PublisherQos qos); + ReturnCode_t get_default_publisher_qos( + inout PublisherQos qos); + + ReturnCode_t set_default_subscriber_qos( + in SubscriberQos qos); + ReturnCode_t get_default_subscriber_qos( + inout SubscriberQos qos); + + ReturnCode_t set_default_topic_qos( + in TopicQos qos); + ReturnCode_t get_default_topic_qos( + inout TopicQos qos); + + ReturnCode_t get_discovered_participants( + inout InstanceHandleSeq participant_handles); + ReturnCode_t get_discovered_participant_data( + inout ParticipantBuiltinTopicData participant_data, + in InstanceHandle_t participant_handle); + + ReturnCode_t get_discovered_topics( + inout InstanceHandleSeq topic_handles); + ReturnCode_t get_discovered_topic_data( + inout TopicBuiltinTopicData topic_data, + in InstanceHandle_t topic_handle); + + boolean contains_entity( + in InstanceHandle_t a_handle); + + ReturnCode_t get_current_time( + inout Time_t current_time); + }; + + interface DomainParticipantFactory { + DomainParticipant create_participant( + in DomainId_t domain_id, + in DomainParticipantQos qos, + in DomainParticipantListener a_listener, + in StatusMask mask); + ReturnCode_t delete_participant( + in DomainParticipant a_participant); + + DomainParticipant lookup_participant( + in DomainId_t domain_id); + + ReturnCode_t set_default_participant_qos( + in DomainParticipantQos qos); + ReturnCode_t get_default_participant_qos( + inout DomainParticipantQos qos); + + ReturnCode_t set_qos( + in DomainParticipantFactoryQos qos); + ReturnCode_t get_qos( + inout DomainParticipantFactoryQos qos); + }; + + interface TypeSupport { + // ReturnCode_t register_type( + // in DomainParticipant domain, + // in string type_name); + // string get_type_name(); + }; + + // ---------------------------------------------------------------------- + interface TopicDescription { + string get_type_name(); + string get_name(); + + DomainParticipant get_participant(); + }; + + interface Topic : Entity, TopicDescription { + ReturnCode_t set_qos( + in TopicQos qos); + ReturnCode_t get_qos( + inout TopicQos qos); + ReturnCode_t set_listener( + in TopicListener a_listener, + in StatusMask mask); + TopicListener get_listener(); + // Access the status + ReturnCode_t get_inconsistent_topic_status( + inout InconsistentTopicStatus a_status); + }; + + interface ContentFilteredTopic : TopicDescription { + string get_filter_expression(); + ReturnCode_t get_expression_parameters( + inout StringSeq expression_parameters); + ReturnCode_t set_expression_parameters( + in StringSeq expression_parameters); + Topic get_related_topic(); + }; + + interface MultiTopic : TopicDescription { + string get_subscription_expression(); + ReturnCode_t get_expression_parameters( + inout StringSeq expression_parameters); + ReturnCode_t set_expression_parameters( + in StringSeq expression_parameters); + }; + + // ---------------------------------------------------------------------- + interface Publisher : Entity { + DataWriter create_datawriter( + in Topic a_topic, + in DataWriterQos qos, + in DataWriterListener a_listener, + in StatusMask mask); + ReturnCode_t delete_datawriter( + in DataWriter a_datawriter); + DataWriter lookup_datawriter( + in string topic_name); + + ReturnCode_t delete_contained_entities(); + + ReturnCode_t set_qos( + in PublisherQos qos); + ReturnCode_t get_qos( + inout PublisherQos qos); + + ReturnCode_t set_listener( + in PublisherListener a_listener, + in StatusMask mask); + PublisherListener get_listener(); + + ReturnCode_t suspend_publications(); + ReturnCode_t resume_publications(); + + ReturnCode_t begin_coherent_changes(); + ReturnCode_t end_coherent_changes(); + + ReturnCode_t wait_for_acknowledgments( + in Duration_t max_wait); + + DomainParticipant get_participant(); + + ReturnCode_t set_default_datawriter_qos( + in DataWriterQos qos); + ReturnCode_t get_default_datawriter_qos( + inout DataWriterQos qos); + + ReturnCode_t copy_from_topic_qos( + inout DataWriterQos a_datawriter_qos, + in TopicQos a_topic_qos); + }; + + interface DataWriter : Entity { + // InstanceHandle_t register_instance( + // in Data instance_data); + // InstanceHandle_t register_instance_w_timestamp( + // in Data instance_data, + // in Time_t source_timestamp); + // ReturnCode_t unregister_instance( + // in Data instance_data, + // in InstanceHandle_t handle); + // ReturnCode_t unregister_instance_w_timestamp( + // in Data instance_data, + // in InstanceHandle_t handle, + // in Time_t source_timestamp); + // ReturnCode_t write( + // in Data instance_data, + // in InstanceHandle_t handle); + // ReturnCode_t write_w_timestamp( + // in Data instance_data, + // in InstanceHandle_t handle, + // in Time_t source_timestamp); + // ReturnCode_t dispose( + // in Data instance_data, + // in InstanceHandle_t instance_handle); + // ReturnCode_t dispose_w_timestamp( + // in Data instance_data, + // in InstanceHandle_t instance_handle, + // in Time_t source_timestamp); + // ReturnCode_t get_key_value( + // inout Data key_holder, + // in InstanceHandle_t handle); + // InstanceHandle_t lookup_instance( + // in Data instance_data); + + ReturnCode_t set_qos( + in DataWriterQos qos); + ReturnCode_t get_qos( + inout DataWriterQos qos); + + ReturnCode_t set_listener( + in DataWriterListener a_listener, + in StatusMask mask); + DataWriterListener get_listener(); + + Topic get_topic(); + Publisher get_publisher(); + + ReturnCode_t wait_for_acknowledgments( + in Duration_t max_wait); + + // Access the status + ReturnCode_t get_liveliness_lost_status( + inout LivelinessLostStatus status); + ReturnCode_t get_offered_deadline_missed_status( + inout OfferedDeadlineMissedStatus status); + ReturnCode_t get_offered_incompatible_qos_status( + inout OfferedIncompatibleQosStatus status); + ReturnCode_t get_publication_matched_status( + inout PublicationMatchedStatus status); + + ReturnCode_t assert_liveliness(); + + ReturnCode_t get_matched_subscriptions( + inout InstanceHandleSeq subscription_handles); + ReturnCode_t get_matched_subscription_data( + inout SubscriptionBuiltinTopicData subscription_data, + in InstanceHandle_t subscription_handle); + }; + + // ---------------------------------------------------------------------- + interface Subscriber : Entity { + DataReader create_datareader( + in TopicDescription a_topic, + in DataReaderQos qos, + in DataReaderListener a_listener, + in StatusMask mask); + ReturnCode_t delete_datareader( + in DataReader a_datareader); + ReturnCode_t delete_contained_entities(); + DataReader lookup_datareader( + in string topic_name); + ReturnCode_t get_datareaders( + inout DataReaderSeq readers, + in SampleStateMask sample_states, + in ViewStateMask view_states, + in InstanceStateMask instance_states); + ReturnCode_t notify_datareaders(); + + ReturnCode_t set_qos( + in SubscriberQos qos); + ReturnCode_t get_qos( + inout SubscriberQos qos); + + ReturnCode_t set_listener( + in SubscriberListener a_listener, + in StatusMask mask); + SubscriberListener get_listener(); + + ReturnCode_t begin_access(); + ReturnCode_t end_access(); + + DomainParticipant get_participant(); + + ReturnCode_t set_default_datareader_qos( + in DataReaderQos qos); + ReturnCode_t get_default_datareader_qos( + inout DataReaderQos qos); + + ReturnCode_t copy_from_topic_qos( + inout DataReaderQos a_datareader_qos, + in TopicQos a_topic_qos); + }; + + interface DataReader : Entity { + // ReturnCode_t read( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t take( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t read_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in ReadCondition a_condition); + + // ReturnCode_t take_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in ReadCondition a_condition); + + // ReturnCode_t read_next_sample( + // inout Data data_values, + // inout SampleInfo sample_info); + + // ReturnCode_t take_next_sample( + // inout Data data_values, + // inout SampleInfo sample_info); + + // ReturnCode_t read_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t a_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t take_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t a_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t read_next_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t take_next_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t read_next_instance_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in ReadCondition a_condition); + + // ReturnCode_t take_next_instance_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in ReadCondition a_condition); + + // ReturnCode_t return_loan( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos); + + // ReturnCode_t get_key_value( + // inout Data key_holder, + // in InstanceHandle_t handle); + + // InstanceHandle_t lookup_instance( + // in Data instance_data); + + ReadCondition create_readcondition( + in SampleStateMask sample_states, + in ViewStateMask view_states, + in InstanceStateMask instance_states); + + QueryCondition create_querycondition( + in SampleStateMask sample_states, + in ViewStateMask view_states, + in InstanceStateMask instance_states, + in string query_expression, + in StringSeq query_parameters); + + ReturnCode_t delete_readcondition( + in ReadCondition a_condition); + + ReturnCode_t delete_contained_entities(); + + ReturnCode_t set_qos( + in DataReaderQos qos); + ReturnCode_t get_qos( + inout DataReaderQos qos); + + ReturnCode_t set_listener( + in DataReaderListener a_listener, + in StatusMask mask); + DataReaderListener get_listener(); + + TopicDescription get_topicdescription(); + Subscriber get_subscriber(); + + ReturnCode_t get_sample_rejected_status( + inout SampleRejectedStatus status); + ReturnCode_t get_liveliness_changed_status( + inout LivelinessChangedStatus status); + ReturnCode_t get_requested_deadline_missed_status( + inout RequestedDeadlineMissedStatus status); + ReturnCode_t get_requested_incompatible_qos_status( + inout RequestedIncompatibleQosStatus status); + ReturnCode_t get_subscription_matched_status( + inout SubscriptionMatchedStatus status); + ReturnCode_t get_sample_lost_status( + inout SampleLostStatus status); + + ReturnCode_t wait_for_historical_data( + in Duration_t max_wait); + + ReturnCode_t get_matched_publications( + inout InstanceHandleSeq publication_handles); + ReturnCode_t get_matched_publication_data( + inout PublicationBuiltinTopicData publication_data, + in InstanceHandle_t publication_handle); + }; + + + struct SampleInfo { + SampleStateKind sample_state; + ViewStateKind view_state; + InstanceStateKind instance_state; + Time_t source_timestamp; + InstanceHandle_t instance_handle; + InstanceHandle_t publication_handle; + long disposed_generation_count; + long no_writers_generation_count; + long sample_rank; + long generation_rank; + long absolute_generation_rank; + boolean valid_data; + }; + + typedef sequence<SampleInfo> SampleInfoSeq; +}; + +#endif |