From def3070b04ce6c86ac56133e938f981f69d9a399 Mon Sep 17 00:00:00 2001 From: Johnny Willemsen Date: Mon, 2 Nov 2009 10:38:00 +0000 Subject: --- .../dds4ccm/docs/dds4CCM v1.0 NT v3 update 6.idl3p | 760 ++++++++++----------- 1 file changed, 380 insertions(+), 380 deletions(-) diff --git a/CIAO/connectors/dds4ccm/docs/dds4CCM v1.0 NT v3 update 6.idl3p b/CIAO/connectors/dds4ccm/docs/dds4CCM v1.0 NT v3 update 6.idl3p index 99611ae6145..deb00c385f9 100644 --- a/CIAO/connectors/dds4ccm/docs/dds4CCM v1.0 NT v3 update 6.idl3p +++ b/CIAO/connectors/dds4ccm/docs/dds4CCM v1.0 NT v3 update 6.idl3p @@ -4,386 +4,386 @@ module CCM_DDS { - // =================================================================================== - // Non-typed part - // (here are placed all the constructs that are not dependent on the data type) - // =================================================================================== - // --------------------------- - // Enums, structs and Typedefs - // --------------------------- - typedef unsigned long InstanceNumber_t; // count or index of instances - typedef sequence InstanceNumberSeq; - - enum AccessStatus { - FRESH_INFO, - ALREADY_SEEN - }; - - enum InstanceStatus { // as perceived by the component - INSTANCE_CREATED, - INSTANCE_FILTERED_IN, - INSTANCE_UPDATED, - INSTANCE_FILTERED_OUT, - INSTANCE_DELETED - }; - - struct ReadInfo { - DDS::InstanceHandle_t instance_handle; - DDS::Time_t source_timestamp; - AccessStatus access_status; - InstanceStatus instance_status; - boolean valid_data; - }; - typedef sequence ReadInfoSeq; - - struct QueryFilter { - string query; - DDS::StringSeq query_parameters; - }; - - // Data Listener control - // --------------------- - enum ListenerMode { - NOT_ENABLED, - ONE_BY_ONE, - MANY_BY_MANY - }; - - // ---------- - // Exceptions - // ---------- - exception AlreadyCreated { - InstanceNumberSeq indexes; // of the erroneous - }; - - exception NonExistent{ - InstanceNumberSeq indexes; // of the erroneous - }; - - exception InternalError{ - unsigned long error_code; // DDS codes that are relevant: - // ERROR (1); - // UNSUPPORTED (2); - // BAD_PARAMETER (3) - // PRECONDITION_NOT_MET (4) - // OUT_OF_RESOURCE (5) - InstanceNumber_t index; // of the erroneous - }; - - exception BadParameter {}; - - // ---------- - // Interfaces - // ---------- - - // Listener Control - // ---------------- - local interface DataListenerControl { - attribute ListenerMode mode; // default NOT_ENABLED - attribute InstanceNumber_t max_delivered_samples // default 0 (no limit) - }; - - local interface StateListenerControl : dataListenerControl { - attribute boolean is_filter_interpreted; // default False - }; - - // Status Access - // ------------- - local interface PortStatusListener { // status that are relevant to the component - void on_requested_deadline_missed( - in DDS::DataReader the_reader, - in DDS::RequestedDeadlineMissedStatus status); - void on_sample_lost( - in DDS::DataReader the_reader, - in DDS::SampleLostStatus status); - }; - - local interface ConnectorStatusListener { // status that are relevant system-wide - void on_inconsistent_topic( - in DDS::Topic the_topic, - in DDS::InconsistentTopicStatus status); - void on_requested_incompatible_qos( - in DDS::DataReader the_reader, - in DDS::RequestedIncompatibleQosStatus status); - void on_sample_rejected( - in DDS::DataReader the_reader, - in DDS::SampleRejectedStatus status); - void on_offered_deadline_missed( - in DDS::DataWriter the_writer, - in DDS::OfferedDeadlineMissedStatus status); - void on_offered_incompatible_qos( - in DDS::DataWriter the_writer, - in DDS::OfferedIncompatibleQosStatus status); - void on_unexpected_status ( - in DDS::Entity the_entity, - in DDS::StatusKind status_kind); - }; - - // --------------- - // Connector bases - // --------------- - connector DDS_Base { - uses ConnectorStatusListener error_listener; - readonly attribute DDS::DomainId_t domain_id; - readonly attribute string qos_profile;// File URL or XML string - }; - - connector DDS_TopicBase : DDS_Base { - readonly attribute string topic_name; - readonly attribute DDS::StringSeq key_fields; - }; - - // ==================================================================================== - // Typed sub-part - // (here are placed all the construct that are depending on the data type - // either directly or indirectly) - // ==================================================================================== - - module Typed TSeq> { - // Gathers all the constructs that are dependent on the data type (T), - // either directly -- interfaces making use of T or TSeq, - // or indirectly -- porttypes using or providing those intefaces. - // TSeq is passed as a second parameter to avoid creating a new sequence type. - - // ------------------------------------- - // Interfaces to be 'used' or 'provided' - // ------------------------------------- - - // Data access - publishing side - // ----------------------------- - - // -- InstanceHandle Manager - local interface HandleInstanceManager { - DDS::InstanceHandle_t register_instance (in T an_Instance); - void unregister_instance (in DDS::InstanceHandle_t a_handle); - }; - - // -- Writer: when the instance lifecycle is not a concern - local interface Writer : HandleInstanceManager { - void write_one (in DDS::InstanceHandle_t a_handle, in T an_instance) - raises (InternalError); - void write_many (in TSeq instances) - raises (InternalError); - attribute boolean is_coherent_write; // False by default - // behavior - // --------- - // - the handle is exactly managed as by DDS (cf. DDS spec for more details) - // - attempt to write_many is stopped at the first error - // - if is_coherent_write, DDS write orders issued by a write_many - // are placed between begin/end coherent updates (even if an error occurs) - }; - - // -- Updater: when the instance lifecycle is a concern - local interface Updater : HandleInstanceManager { - void create_one (in DDS::InstanceHandle_t a_handle, in T an_instance) - raises (AlreadyCreated, - InternalError); - void update_one (in DDS::InstanceHandle_t a_handle, in T an_instance) - raises (NonExistent, - InternalError); - void delete_one (in DDS::InstanceHandle_t a_handle, in T an_instance) - raises (NonExistent, - InternalError); - - void create_many (in TSeq instances) - raises (AlreadyCreated, - InternalError); - void update_many (in TSeq instances) - raises (NonExistent, - InternalError); - void delete_many (in TSeq instances) - raises (NonExistent, - InternalError); - - readonly attribute boolean is_global_scope; // False by defauls - attribute boolean is_coherent_write; // False by default - - // behavior - // -------- - // - the handle is exactly managed as by DDS (cf. DDS spec for more details) - // - exceptions AlreadyCreated or NonExistent are raised at least if a local - // conflict exists; in addition if is_global_scope is true, the test on - // existence attempts to take into account the instances created outside - // - note: this check requires to previously attempt to read (not free) - // - note: this check is not 100% guaranteed as a creation or a deletion - // may occur in the short time between the check and the DDS order - // - For *-many operations: - // - global check is performed before actual write or dispose - // (in case of error, all the erroneous instances are reported - // in the exception) - // - attempt to DDS write or dispose is stopped at the first error - // - if is_coherent_write, DDS orders resulting from a *_many operation - // are placed between begin/end coherent updates (even if an error - // occurs) - }; - - // Data access - subscribing side - // ------------------------------ - - // -- Reader: to simply access to the available data (no wait) - local interface Reader { - void read_last (out TSeq instances, out ReadInfoSeq infos) - raises (InternalError); - void read_all (out TSeq instances, out ReadInfoSeq infos) - raises (InternalError); - void read_one_last (in DDS::InstanceHandle_t instance_handle, - inout T an_instance, out ReadInfo info) - raises (NonExistent, - InternalError); - void read_one_all (in DDS::InstanceHandle_t instance_handle, - in T an_instance, - out TSeq instances, out ReadInfoSeq infos) - raises (NonExistent, - InternalError); - attribute QueryFilter filter - setraises (BadParameter); - // behavior - // -------- - // - read operations are performed with the following parameters - // - READ or NO_READ - // - NEW or NOT_NEW - // - ALIVE - // - through the query as specified in the filter ("" means no query) - // - data returned: - // - read_last returns for each living instance, its last sample - // - read_all returns all the samples of all instances - // ordered by instance first and then by sample - // - read_one_last returns the last sample of the given instance - // - read_one_all returns all the samples for the given instance - // - read_one operations use the instance_handle the same way - // the Writer or Updater *_one operations do - }; - - // -- Getter: to get new data (and wait for) - local interface Getter { - boolean get_one (out T an_instance, out ReadInfo info) - raises (InternalError); - boolean get_many (out TSeq instances, out ReadInfoSeq infos) - raises (InternalError); - attribute DDS::Duration_t time_out; - attribute InstanceNumber_t max_delivered_samples // default 0 (no limit) - // behavior - // -------- - // - get operations are performed with the following parameters - // - NO_READ - // - NEW or NOT_NEW - // - ALIVE or NOT_ALIVE - // - through the query as specified in the associated Reader - // - within the time limit specified in time_out - // - all operations returns True if data are provided - // or False if time-out occurred - // - data returned: - // - get_one returns each read sample one by one - // - get_many returns all available samples within the - // max_delivered_samples limit - }; - - // -- Listener: similar to a Getter but in push mode - local interface Listener { - void on_one_data (in T an_instance, in ReadInfo info); - void on_many_data (in TSeq instances, in ReadInfoSeq infos); - // behavior - // -------- - // - on_one_data() trigered is the mode of the associated listener control - // is ONE_BY_ONE (then similar to a get_one(), except that in push mode - // instead of pull mode) - // - on_many_data() triggered if the listener mode is MANY_BY_MANY (then - // similar to get_many() but in push mode) - // - query filter (if any) in the associated Reader - }; - - // -- StateListener: listener to be notified based on the instance lifecycle - local interface StateListener { - void on_creation (in T an_instance, in ReadInfo info); - void on_one_update (in T an_instance, in ReadInfoSeq infos); - void on_many_updates (in TSeq instances, in ReadInfo info); - void on_deletion (in T an_instance, in ReadInfo info); - // behavior - // -------- - // - no operations are trigerred if the mode of the associated listener - // control is NOT_ENABLED - // - on_creation() is triggered if the instance is considered as new in the - // component scope; note that in case there is a filter and the attribute - // is_filter_interpreted of the listener control is True, this gathers also - // the case when the instance is filtered-in. - // - on_delation() is triggered if the instance is no more existing; note - // that in case there is a filter and the attribute - // is_filter_interpreted of the listener control is True, this gathers - // also the case when the instance is filtered-out - // - on_one_update() is trigerred if neither on_creation() nor on_deletion() - // are triggered and the mode of the associated listener control is - // ONE_BY_ONE - // - on_many_updates()is trigerred if neither on_creation() nor on_deletion() - // are triggered and the mode of the associated listener control is - // MANY_BY_MANY; the number of returned samples is within the limits of - // max_delivered_samples attribute of the associated listener control. - // - query filter (if any) in the associated Reader - }; - - - // --------- - // DDS Ports - // --------- - - porttype DDS_Write { - uses Writer data; - uses DDS::DataWriter dds_entity; - }; - - porttype DDS_Update { - uses Updater data; - uses DDS::DataWriter dds_entity; - }; - - porttype DDS_Read { - uses Reader data; - uses DDS::DataReader dds_entity; - provides PortStatusListener status; - }; - - porttype DDS_Get { - uses Reader data; - uses Getter fresh_data; - uses DDS::DataReader dds_entity; - provides PortStatusListener status; - }; - - porttype DDS_Listen { - uses Reader data; - uses DataListenerControl data_control; - provides Listener data_listener; - uses DDS::DataReader dds_entity; - provides PortStatusListener status; - }; - - porttype DDS_StateListen { - uses Reader data; - uses StateListenerControl data_control; - provides StateListener data_listener; - uses DDS::DataReader dds_entity; - provides PortStatusListener status; - }; - - // ---------------------------- - // Connectors - // (Correspond to DDS patterns) - // ---------------------------- - - connector DDS_State : DDS_TopicBase { - mirrorport DDS_Update observable; - mirrorport DDS_Read passive_observer; - mirrorport DDS_Get pull_observer; - mirrorport DDS_Listen push_observer; - mirrorport DDS_StateListen push_state_observer; - }; - - connector DDS_Event : DDS_TopicBase { - mirrorport DDS_Write supplier; - mirrorport DDS_Get pull_consumer; - mirrorport DDS_Listen push_consumer; - }; - }; - }; + // =================================================================================== + // Non-typed part + // (here are placed all the constructs that are not dependent on the data type) + // =================================================================================== + // --------------------------- + // Enums, structs and Typedefs + // --------------------------- + typedef unsigned long InstanceNumber_t; // count or index of instances + typedef sequence InstanceNumberSeq; + + enum AccessStatus { + FRESH_INFO, + ALREADY_SEEN + }; + + enum InstanceStatus { // as perceived by the component + INSTANCE_CREATED, + INSTANCE_FILTERED_IN, + INSTANCE_UPDATED, + INSTANCE_FILTERED_OUT, + INSTANCE_DELETED + }; + + struct ReadInfo { + DDS::InstanceHandle_t instance_handle; + DDS::Time_t source_timestamp; + AccessStatus access_status; + InstanceStatus instance_status; + boolean valid_data; + }; + typedef sequence ReadInfoSeq; + + struct QueryFilter { + string query; + DDS::StringSeq query_parameters; + }; + + // Data Listener control + // --------------------- + enum ListenerMode { + NOT_ENABLED, + ONE_BY_ONE, + MANY_BY_MANY + }; + + // ---------- + // Exceptions + // ---------- + exception AlreadyCreated { + InstanceNumberSeq indexes; // of the erroneous + }; + + exception NonExistent{ + InstanceNumberSeq indexes; // of the erroneous + }; + + exception InternalError{ + unsigned long error_code; // DDS codes that are relevant: + // ERROR (1); + // UNSUPPORTED (2); + // BAD_PARAMETER (3) + // PRECONDITION_NOT_MET (4) + // OUT_OF_RESOURCE (5) + InstanceNumber_t index; // of the erroneous + }; + + exception BadParameter {}; + + // ---------- + // Interfaces + // ---------- + + // Listener Control + // ---------------- + local interface DataListenerControl { + attribute ListenerMode mode; // default NOT_ENABLED + attribute InstanceNumber_t max_delivered_samples // default 0 (no limit) + }; + + local interface StateListenerControl : dataListenerControl { + attribute boolean is_filter_interpreted; // default False + }; + + // Status Access + // ------------- + local interface PortStatusListener { // status that are relevant to the component + void on_requested_deadline_missed( + in DDS::DataReader the_reader, + in DDS::RequestedDeadlineMissedStatus status); + void on_sample_lost( + in DDS::DataReader the_reader, + in DDS::SampleLostStatus status); + }; + + local interface ConnectorStatusListener { // status that are relevant system-wide + void on_inconsistent_topic( + in DDS::Topic the_topic, + in DDS::InconsistentTopicStatus status); + void on_requested_incompatible_qos( + in DDS::DataReader the_reader, + in DDS::RequestedIncompatibleQosStatus status); + void on_sample_rejected( + in DDS::DataReader the_reader, + in DDS::SampleRejectedStatus status); + void on_offered_deadline_missed( + in DDS::DataWriter the_writer, + in DDS::OfferedDeadlineMissedStatus status); + void on_offered_incompatible_qos( + in DDS::DataWriter the_writer, + in DDS::OfferedIncompatibleQosStatus status); + void on_unexpected_status ( + in DDS::Entity the_entity, + in DDS::StatusKind status_kind); + }; + + // --------------- + // Connector bases + // --------------- + connector DDS_Base { + uses ConnectorStatusListener error_listener; + readonly attribute DDS::DomainId_t domain_id; + readonly attribute string qos_profile;// File URL or XML string + }; + + connector DDS_TopicBase : DDS_Base { + readonly attribute string topic_name; + readonly attribute DDS::StringSeq key_fields; + }; + + // ==================================================================================== + // Typed sub-part + // (here are placed all the construct that are depending on the data type + // either directly or indirectly) + // ==================================================================================== + + module Typed TSeq> { + // Gathers all the constructs that are dependent on the data type (T), + // either directly -- interfaces making use of T or TSeq, + // or indirectly -- porttypes using or providing those intefaces. + // TSeq is passed as a second parameter to avoid creating a new sequence type. + + // ------------------------------------- + // Interfaces to be 'used' or 'provided' + // ------------------------------------- + + // Data access - publishing side + // ----------------------------- + + // -- InstanceHandle Manager + local interface HandleInstanceManager { + DDS::InstanceHandle_t register_instance (in T an_Instance); + void unregister_instance (in DDS::InstanceHandle_t a_handle); + }; + + // -- Writer: when the instance lifecycle is not a concern + local interface Writer : HandleInstanceManager { + void write_one (in DDS::InstanceHandle_t a_handle, in T an_instance) + raises (InternalError); + void write_many (in TSeq instances) + raises (InternalError); + attribute boolean is_coherent_write; // False by default + // behavior + // --------- + // - the handle is exactly managed as by DDS (cf. DDS spec for more details) + // - attempt to write_many is stopped at the first error + // - if is_coherent_write, DDS write orders issued by a write_many + // are placed between begin/end coherent updates (even if an error occurs) + }; + + // -- Updater: when the instance lifecycle is a concern + local interface Updater : HandleInstanceManager { + void create_one (in DDS::InstanceHandle_t a_handle, in T an_instance) + raises (AlreadyCreated, + InternalError); + void update_one (in DDS::InstanceHandle_t a_handle, in T an_instance) + raises (NonExistent, + InternalError); + void delete_one (in DDS::InstanceHandle_t a_handle, in T an_instance) + raises (NonExistent, + InternalError); + + void create_many (in TSeq instances) + raises (AlreadyCreated, + InternalError); + void update_many (in TSeq instances) + raises (NonExistent, + InternalError); + void delete_many (in TSeq instances) + raises (NonExistent, + InternalError); + + readonly attribute boolean is_global_scope; // False by defauls + attribute boolean is_coherent_write; // False by default + + // behavior + // -------- + // - the handle is exactly managed as by DDS (cf. DDS spec for more details) + // - exceptions AlreadyCreated or NonExistent are raised at least if a local + // conflict exists; in addition if is_global_scope is true, the test on + // existence attempts to take into account the instances created outside + // - note: this check requires to previously attempt to read (not free) + // - note: this check is not 100% guaranteed as a creation or a deletion + // may occur in the short time between the check and the DDS order + // - For *-many operations: + // - global check is performed before actual write or dispose + // (in case of error, all the erroneous instances are reported + // in the exception) + // - attempt to DDS write or dispose is stopped at the first error + // - if is_coherent_write, DDS orders resulting from a *_many operation + // are placed between begin/end coherent updates (even if an error + // occurs) + }; + + // Data access - subscribing side + // ------------------------------ + + // -- Reader: to simply access to the available data (no wait) + local interface Reader { + void read_last (out TSeq instances, out ReadInfoSeq infos) + raises (InternalError); + void read_all (out TSeq instances, out ReadInfoSeq infos) + raises (InternalError); + void read_one_last (in DDS::InstanceHandle_t instance_handle, + inout T an_instance, out ReadInfo info) + raises (NonExistent, + InternalError); + void read_one_all (in DDS::InstanceHandle_t instance_handle, + in T an_instance, + out TSeq instances, out ReadInfoSeq infos) + raises (NonExistent, + InternalError); + attribute QueryFilter filter + setraises (BadParameter); + // behavior + // -------- + // - read operations are performed with the following parameters + // - READ or NO_READ + // - NEW or NOT_NEW + // - ALIVE + // - through the query as specified in the filter ("" means no query) + // - data returned: + // - read_last returns for each living instance, its last sample + // - read_all returns all the samples of all instances + // ordered by instance first and then by sample + // - read_one_last returns the last sample of the given instance + // - read_one_all returns all the samples for the given instance + // - read_one operations use the instance_handle the same way + // the Writer or Updater *_one operations do + }; + + // -- Getter: to get new data (and wait for) + local interface Getter { + boolean get_one (out T an_instance, out ReadInfo info) + raises (InternalError); + boolean get_many (out TSeq instances, out ReadInfoSeq infos) + raises (InternalError); + attribute DDS::Duration_t time_out; + attribute InstanceNumber_t max_delivered_samples // default 0 (no limit) + // behavior + // -------- + // - get operations are performed with the following parameters + // - NO_READ + // - NEW or NOT_NEW + // - ALIVE or NOT_ALIVE + // - through the query as specified in the associated Reader + // - within the time limit specified in time_out + // - all operations returns True if data are provided + // or False if time-out occurred + // - data returned: + // - get_one returns each read sample one by one + // - get_many returns all available samples within the + // max_delivered_samples limit + }; + + // -- Listener: similar to a Getter but in push mode + local interface Listener { + void on_one_data (in T an_instance, in ReadInfo info); + void on_many_data (in TSeq instances, in ReadInfoSeq infos); + // behavior + // -------- + // - on_one_data() trigered is the mode of the associated listener control + // is ONE_BY_ONE (then similar to a get_one(), except that in push mode + // instead of pull mode) + // - on_many_data() triggered if the listener mode is MANY_BY_MANY (then + // similar to get_many() but in push mode) + // - query filter (if any) in the associated Reader + }; + + // -- StateListener: listener to be notified based on the instance lifecycle + local interface StateListener { + void on_creation (in T an_instance, in ReadInfo info); + void on_one_update (in T an_instance, in ReadInfoSeq infos); + void on_many_updates (in TSeq instances, in ReadInfo info); + void on_deletion (in T an_instance, in ReadInfo info); + // behavior + // -------- + // - no operations are trigerred if the mode of the associated listener + // control is NOT_ENABLED + // - on_creation() is triggered if the instance is considered as new in the + // component scope; note that in case there is a filter and the attribute + // is_filter_interpreted of the listener control is True, this gathers also + // the case when the instance is filtered-in. + // - on_delation() is triggered if the instance is no more existing; note + // that in case there is a filter and the attribute + // is_filter_interpreted of the listener control is True, this gathers + // also the case when the instance is filtered-out + // - on_one_update() is trigerred if neither on_creation() nor on_deletion() + // are triggered and the mode of the associated listener control is + // ONE_BY_ONE + // - on_many_updates()is trigerred if neither on_creation() nor on_deletion() + // are triggered and the mode of the associated listener control is + // MANY_BY_MANY; the number of returned samples is within the limits of + // max_delivered_samples attribute of the associated listener control. + // - query filter (if any) in the associated Reader + }; + + + // --------- + // DDS Ports + // --------- + + porttype DDS_Write { + uses Writer data; + uses DDS::DataWriter dds_entity; + }; + + porttype DDS_Update { + uses Updater data; + uses DDS::DataWriter dds_entity; + }; + + porttype DDS_Read { + uses Reader data; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + porttype DDS_Get { + uses Reader data; + uses Getter fresh_data; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + porttype DDS_Listen { + uses Reader data; + uses DataListenerControl data_control; + provides Listener data_listener; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + porttype DDS_StateListen { + uses Reader data; + uses StateListenerControl data_control; + provides StateListener data_listener; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + // ---------------------------- + // Connectors + // (Correspond to DDS patterns) + // ---------------------------- + + connector DDS_State : DDS_TopicBase { + mirrorport DDS_Update observable; + mirrorport DDS_Read passive_observer; + mirrorport DDS_Get pull_observer; + mirrorport DDS_Listen push_observer; + mirrorport DDS_StateListen push_state_observer; + }; + + connector DDS_Event : DDS_TopicBase { + mirrorport DDS_Write supplier; + mirrorport DDS_Get pull_consumer; + mirrorport DDS_Listen push_consumer; + }; + }; + }; -- cgit v1.2.1