diff options
author | msmit <msmit@remedy.nl> | 2012-06-27 13:34:29 +0000 |
---|---|---|
committer | msmit <msmit@remedy.nl> | 2012-06-27 13:34:29 +0000 |
commit | f21c87bb77e66eb0ca39b25028569da05ab94cd3 (patch) | |
tree | b461fc6009d9324d9d5e48389dbd77af555db733 /CIAO/connectors/dds4ccm/tests/UnkeyedWriter | |
parent | 65c6e09af58ce80d078ff792c783823cde924945 (diff) | |
download | ATCD-f21c87bb77e66eb0ca39b25028569da05ab94cd3.tar.gz |
Wed Jun 27 13:34:02 UTC 2012 Marcel Smit <msmit@remedy.nl>
* connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl:
* connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h:
* connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp:
* connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp:
Start the writing of samples upon a publication matched event.
Diffstat (limited to 'CIAO/connectors/dds4ccm/tests/UnkeyedWriter')
4 files changed, 143 insertions, 17 deletions
diff --git a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl index f56e30b82bf..2d2072fc07e 100644 --- a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl +++ b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl @@ -14,6 +14,8 @@ module Writer component Sender { port WriterTestConnector::DDS_Write info_write; + provides CCM_DDS::ConnectorStatusListener connector_status; + attribute unsigned short rate; attribute unsigned short iterations; attribute unsigned short keys; diff --git a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp index 65f369bc83c..15680d1a8b5 100644 --- a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp +++ b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp @@ -32,6 +32,64 @@ namespace CIAO_Writer_Sender_Impl { /** + * ConnectorStatusListener_exec_i + */ + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i ( + Sender_exec_i &callback) + : callback_ (callback) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic ( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos ( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected ( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::PUBLICATION_MATCHED_STATUS) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_unexpected_status - " + "Publication matched received: starting the test\n")); + + this->callback_.get_started (); + } + } + + /** * Pulse Generator */ @@ -90,6 +148,12 @@ namespace CIAO_Writer_Sender_Impl return reactor; } + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_connector_status (void) + { + return new ConnectorStatusListener_exec_i (*this); + } + void Sender_exec_i::reset_iterations () { @@ -266,6 +330,27 @@ namespace CIAO_Writer_Sender_Impl } void + Sender_exec_i::get_started (void) + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + WriterTest *new_key = new WriterTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 1; + + this->ktests_[key] = new_key; + } + this->start (); + this->last_key = this->ktests_.begin (); + reset_iterations (); + } + + void Sender_exec_i::start (void) { // calculate the interval time @@ -353,22 +438,6 @@ namespace CIAO_Writer_Sender_Impl void Sender_exec_i::ccm_activate (void) { - ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, - this->mutex_, CORBA::INTERNAL ()); - - for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) - { - char key[7]; - WriterTest *new_key = new WriterTest; - ACE_OS::sprintf (key, "KEY_%d", i); - new_key->key = CORBA::string_dup(key); - new_key->iteration = 1; - - this->ktests_[key] = new_key; - } - this->start (); - this->last_key = this->ktests_.begin (); - reset_iterations (); } void diff --git a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h index fd35ff5f4e4..517499ef090 100644 --- a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h +++ b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h @@ -51,6 +51,39 @@ namespace CIAO_Writer_Sender_Impl }; /** + * ConnectorStatusListener_exec_i + */ + class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Sender_exec_i &callback); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic (::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected (::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status (::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Sender_exec_i &callback_; + }; + + /** * Pulse Generator */ class pulse_Generator : @@ -83,6 +116,8 @@ namespace CIAO_Writer_Sender_Impl //@{ /** Component attributes and port operations. */ + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_connector_status (void); virtual ::CORBA::UShort rate (void); @@ -109,7 +144,7 @@ namespace CIAO_Writer_Sender_Impl //@{ /** User defined public operations. */ void tick (void); - + void get_started (void); //@} private: diff --git a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp index b78c6f93e09..2e1f9c6f360 100644 --- a/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp +++ b/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp @@ -353,6 +353,26 @@ </internalEndpoint> </connection> + <connection> + <name>connector_status_connection</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>error_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Writer_ConnectorComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>connector_status</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + </connection> + <artifact xmi:id="Sender_ExecArtifact"> <name>Sender_exec</name> <source/> |