summaryrefslogtreecommitdiff
path: root/CIAO/connectors/dds4ccm/tests/UnkeyedWriter
diff options
context:
space:
mode:
authormsmit <msmit@remedy.nl>2012-06-27 13:34:29 +0000
committermsmit <msmit@remedy.nl>2012-06-27 13:34:29 +0000
commitf21c87bb77e66eb0ca39b25028569da05ab94cd3 (patch)
treeb461fc6009d9324d9d5e48389dbd77af555db733 /CIAO/connectors/dds4ccm/tests/UnkeyedWriter
parent65c6e09af58ce80d078ff792c783823cde924945 (diff)
downloadATCD-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')
-rw-r--r--CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl2
-rw-r--r--CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp101
-rw-r--r--CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h37
-rw-r--r--CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp20
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/>