summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormsmit <msmit@remedy.nl>2009-08-24 13:31:37 +0000
committermsmit <msmit@remedy.nl>2009-08-24 13:31:37 +0000
commit87b6d65a1aad0180717e697aa0dd205c865dd153 (patch)
treec5804db473b795ea86bffd70337dceb90c40c00f
parent998b569b713ecb8a6c9db9f5611b127e13d7a371 (diff)
downloadATCD-87b6d65a1aad0180717e697aa0dd205c865dd153.tar.gz
Mon Aug 24 13:31:57 UTC 2009 Marcel Smit <msmit@remedy.nl>
* connectors/AMI_CCM/AMI/AMI_exec.h: * connectors/AMI_CCM/AMI/AMI_exec.cpp: * connectors/AMI_CCM/AMI/AMI_internal_i.h: * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: * connectors/AMI_CCM/AMI/AMI_server.h: * connectors/AMI_CCM/AMI/AMI_server.cpp: * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: * connectors/AMI_CCM/Sender/Hello_Sender.idl: * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: * connectors/AMI_CCM/descriptors/Plan.cdp: Implemented synchronous calls from Sender to Receiver. Renamed some interfaces to match the CORBA specs regarding AMI.
-rw-r--r--modules/CIAO/ChangeLog18
-rw-r--r--modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.cpp2
-rw-r--r--modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.h2
-rw-r--r--modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.cpp3
-rw-r--r--modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.h1
-rw-r--r--modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.cpp2
-rw-r--r--modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.h1
-rw-r--r--modules/CIAO/connectors/AMI_CCM/Hello_Base/Hello_Base.idl4
-rw-r--r--modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp2
-rw-r--r--modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h6
-rw-r--r--modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender.idl5
-rw-r--r--modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp84
-rw-r--r--modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.h18
-rw-r--r--modules/CIAO/connectors/AMI_CCM/descriptors/Plan.cdp16
14 files changed, 129 insertions, 35 deletions
diff --git a/modules/CIAO/ChangeLog b/modules/CIAO/ChangeLog
index b811864541c..d66cd75c9c2 100644
--- a/modules/CIAO/ChangeLog
+++ b/modules/CIAO/ChangeLog
@@ -1,3 +1,21 @@
+Mon Aug 24 13:31:57 UTC 2009 Marcel Smit <msmit@remedy.nl>
+
+ * connectors/AMI_CCM/AMI/AMI_exec.h:
+ * connectors/AMI_CCM/AMI/AMI_exec.cpp:
+ * connectors/AMI_CCM/AMI/AMI_internal_i.h:
+ * connectors/AMI_CCM/AMI/AMI_internal_i.cpp:
+ * connectors/AMI_CCM/AMI/AMI_server.h:
+ * connectors/AMI_CCM/AMI/AMI_server.cpp:
+ * connectors/AMI_CCM/Hello_Base/Hello_Base.idl:
+ * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h:
+ * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp:
+ * connectors/AMI_CCM/Sender/Hello_Sender.idl:
+ * connectors/AMI_CCM/Sender/Hello_Sender_exec.h:
+ * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp:
+ * connectors/AMI_CCM/descriptors/Plan.cdp:
+ Implemented synchronous calls from Sender to Receiver. Renamed some
+ interfaces to match the CORBA specs regarding AMI.
+
Mon Aug 24 12:21:50 UTC 2009 Marcel Smit <msmit@remedy.nl>
* connectors/AMI_CCM/AMI/AMI.mpc:
diff --git a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.cpp b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.cpp
index 5efb1a93c94..7eb9310b12a 100644
--- a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.cpp
+++ b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.cpp
@@ -215,7 +215,7 @@ namespace CIAO_Hello_AMI_AMI_Impl
// Operations from ::CCM_AMI::AMI_ami_foo
::CCM_AMI::Cookie
- AMI_ami_foo_exec_i::sendc_asynch_foo (
+ AMI_ami_foo_exec_i::sendc_foo (
const char * in_str)
{
printf ("AMI :\tsendc_asynch_foo <%s>\n", in_str);
diff --git a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.h b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.h
index 2363a250c51..2947ebd6bd0 100644
--- a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.h
+++ b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_exec.h
@@ -108,7 +108,7 @@ namespace CIAO_Hello_AMI_AMI_Impl
// be/be_visitor_operation/operation_ch.cpp:46
virtual ::CCM_AMI::Cookie
- sendc_asynch_foo (
+ sendc_foo (
const char * in_str);
private:
#if !defined (AMI_CORBA_IMPLEMENTATION)
diff --git a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.cpp b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.cpp
index 93c36e74e33..e7e8d6d612d 100644
--- a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.cpp
+++ b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.cpp
@@ -1,3 +1,4 @@
+// $Id$
#include "AMI_internal_i.h"
@@ -14,7 +15,7 @@ AMI_internal_i::asynch_foo (const char * in_str,
try
{
printf ("AMI CORBA :\tReceived string <%s>. Try passing it to the Receiver component\n", in_str);
- CORBA::Long result = foo_receiver_->asynch_foo (CORBA::string_dup (in_str), out_str);
+ CORBA::Long result = foo_receiver_->foo (CORBA::string_dup (in_str), out_str);
return result;
}
catch (CCM_AMI::InternalError& ex)
diff --git a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.h b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.h
index 7e3732e4678..106126a1901 100644
--- a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.h
+++ b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_internal_i.h
@@ -1,3 +1,4 @@
+// $Id$
#ifndef AMI_INTERNAL_I_H
#define AMI_INTERNAL_I_H
diff --git a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.cpp b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.cpp
index b40edcb49b9..e77ad883277 100644
--- a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.cpp
+++ b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.cpp
@@ -1,3 +1,5 @@
+// $Id$
+
#include "AMI_server.h"
AMI_server::AMI_server (CORBA::ORB_ptr orb, ::CCM_AMI::AMI_foo_ptr foo_receiver)
diff --git a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.h b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.h
index 5f50e47beca..cae82ca3667 100644
--- a/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.h
+++ b/modules/CIAO/connectors/AMI_CCM/AMI/AMI_server.h
@@ -1,3 +1,4 @@
+// $Id$
#ifndef AMI_SERVER_H
#define AMI_SERVER_H
diff --git a/modules/CIAO/connectors/AMI_CCM/Hello_Base/Hello_Base.idl b/modules/CIAO/connectors/AMI_CCM/Hello_Base/Hello_Base.idl
index bc4659fe6d7..4cca97b7506 100644
--- a/modules/CIAO/connectors/AMI_CCM/Hello_Base/Hello_Base.idl
+++ b/modules/CIAO/connectors/AMI_CCM/Hello_Base/Hello_Base.idl
@@ -12,7 +12,7 @@ module CCM_AMI
// Sender/Receiver interface
interface AMI_foo
{
- long asynch_foo (in string in_str, out string answer)
+ long foo (in string in_str, out string answer)
raises (InternalError);
};
@@ -27,6 +27,6 @@ module CCM_AMI
// using the AMI_foo interface.
interface AMI_ami_foo
{
- Cookie sendc_asynch_foo (in string in_str);
+ Cookie sendc_foo (in string in_str);
};
};
diff --git a/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp b/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp
index 327e6b628bc..750902e9470 100644
--- a/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp
+++ b/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp
@@ -48,7 +48,7 @@ namespace CIAO_Hello_AMI_Receiver_Impl
// Operations from ::CCM_AMI::AMI_foo
::CORBA::Long
- AMI_foo_exec_i::asynch_foo (
+ AMI_foo_exec_i::foo (
const char * in_str,
::CORBA::String_out answer)
{
diff --git a/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h b/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h
index 837555c9bb3..6aaee4d7c4f 100644
--- a/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h
+++ b/modules/CIAO/connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h
@@ -57,9 +57,9 @@ namespace CIAO_Hello_AMI_Receiver_Impl
// be/be_visitor_operation/operation_ch.cpp:46
virtual ::CORBA::Long
- asynch_foo (
- const char * in_str,
- ::CORBA::String_out answer);
+ foo (
+ const char * in_str,
+ ::CORBA::String_out answer);
};
class Receiver_exec_i
diff --git a/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender.idl b/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender.idl
index 5d82a899440..1c7c542a35d 100644
--- a/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender.idl
+++ b/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender.idl
@@ -11,9 +11,12 @@ module Hello_AMI
{
component Sender
{
- //uses the ami component.
+ // for asynch invocation.
uses CCM_AMI::AMI_ami_foo run_asynch_foo;
+ // for synchronous invocation
+ uses CCM_AMI::AMI_foo run_foo;
+
//provides the callback function/exception for the AMI component.
provides CCM_AMI::AMI_foo_callback the_foo_callback;
};
diff --git a/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp b/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp
index 6195e6a30bd..1c5d15d4fbd 100644
--- a/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp
+++ b/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp
@@ -33,28 +33,65 @@
namespace CIAO_Hello_AMI_Sender_Impl
{
-pulse_generator::pulse_generator (::CCM_AMI::AMI_ami_foo_ptr foo_ami)
- : foo_ami_ (::CCM_AMI::AMI_ami_foo::_duplicate (foo_ami))
-{
-}
-int pulse_generator::svc ()
-{
- printf ("Sender :\tpulse_generator::svc\n");
+ //============================================================
+ // Worker thread for asynchronous invocations
+ //============================================================
+ asynch_generator::asynch_generator (::CCM_AMI::AMI_ami_foo_ptr foo_ami)
+ : foo_ami_ (::CCM_AMI::AMI_ami_foo::_duplicate (foo_ami))
+ {
+ }
+
+ int asynch_generator::svc ()
+ {
+ ACE_OS::sleep (5);
+ long cookie;
+ for (int i = 0; i < 5; ++i)
+ {
+ if (CORBA::is_nil (foo_ami_))
+ printf ("Sender :\tfoo_receiver is NIL !!!\n");
+ else
+ {
+ cookie = foo_ami_->sendc_foo ("Do something asynchronous");
+ printf ("Sender :\tInvoked Asynchronous call. cookie <%ld>\n", cookie);
+ }
+ }
+
+ printf ("Sender :\tInvoke Asynchronous call to test EXCEPTION HANDLING\n");
+ cookie = foo_ami_->sendc_foo ("");
+ printf ("Sender :\tInvoked Asynchronous call. cookie <%ld>\n", cookie);
+ return 0;
+ }
+
+ //============================================================
+ // Worker thread for synchronous invocations
+ //============================================================
+ synch_generator::synch_generator (::CCM_AMI::AMI_foo_ptr foo_ami)
+ : foo_ami_ (::CCM_AMI::AMI_foo::_duplicate (foo_ami))
+ {
+ }
+
+ int synch_generator::svc ()
+ {
ACE_OS::sleep (5);
+ //run synch calls
+ char * out_str;
for (int i = 0; i < 5; ++i)
{
- if (CORBA::is_nil (foo_ami_))
- printf ("Sender :\tfoo_receiver is NIL !!!\n");
- else
- {
- long cookie = foo_ami_->sendc_asynch_foo ("Do something funny");
- printf ("Sender :\tasynch_foo has been called. <%ld> received as cookie.\n", cookie);
- }
+ CORBA::Long result = foo_ami_->foo ("Do something synchronous", out_str);
+ printf ("Sender :\tInvoked synchronous call result <%d> answer <%s>\n", result, out_str);
}
- foo_ami_->sendc_asynch_foo ("");
- return 0;
-}
+ try
+ {
+ CORBA::Long result = foo_ami_->foo ("", out_str);
+ printf ("Sender :\tInvoked synchronous call result <%d> answer <%s>\n", result, out_str);
+ }
+ catch (CCM_AMI::InternalError& ex)
+ {
+ printf ("Expected Exception caught : <%d> <%s>\n", ex.id, ex.error_string.in ());
+ }
+ return 0;
+ }
//============================================================
// Facet Executor Implementation Class: AMI_foo_callback_exec_i
@@ -135,13 +172,16 @@ int pulse_generator::svc ()
void
Sender_exec_i::ccm_activate (void)
{
- ::CCM_AMI::AMI_ami_foo_var foo =
+ ::CCM_AMI::AMI_ami_foo_var asynch_foo =
this->context_->get_connection_run_asynch_foo ();
+ ::CCM_AMI::AMI_foo_var synch_foo =
+ this->context_->get_connection_run_foo ();
+
+ asynch_generator* asynch = new asynch_generator (asynch_foo);
+ asynch->activate (THR_NEW_LWP | THR_JOINABLE, 1);
- this->pulser_= new pulse_generator (foo);
-
- this->pulser_->activate (THR_NEW_LWP | THR_JOINABLE,
- 1);
+ synch_generator* synch = new synch_generator (synch_foo);
+ synch->activate (THR_NEW_LWP | THR_JOINABLE, 1);
}
void
diff --git a/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.h b/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.h
index c8acc5c4d8b..03f736b4ff3 100644
--- a/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.h
+++ b/modules/CIAO/connectors/AMI_CCM/Sender/Hello_Sender_exec.h
@@ -45,10 +45,11 @@
namespace CIAO_Hello_AMI_Sender_Impl
{
- class pulse_generator : public virtual ACE_Task_Base
+ // Worker thread for asynchronous invocations
+ class asynch_generator : public virtual ACE_Task_Base
{
public:
- pulse_generator (::CCM_AMI::AMI_ami_foo_ptr foo_ami);
+ asynch_generator (::CCM_AMI::AMI_ami_foo_ptr foo_ami);
virtual int svc (void);
@@ -56,6 +57,18 @@ namespace CIAO_Hello_AMI_Sender_Impl
::CCM_AMI::AMI_ami_foo_var foo_ami_;
};
+ // Worker thread for synchronous invocations
+ class synch_generator : public virtual ACE_Task_Base
+ {
+ public:
+ synch_generator (::CCM_AMI::AMI_foo_ptr foo_ami);
+
+ virtual int svc (void);
+
+ private:
+ ::CCM_AMI::AMI_foo_var foo_ami_;
+ };
+
class AMI_foo_callback_exec_i
: public virtual ::CCM_AMI::CCM_AMI_foo_callback,
@@ -116,7 +129,6 @@ namespace CIAO_Hello_AMI_Sender_Impl
private:
::Hello_AMI::CCM_Sender_Context_var context_;
- pulse_generator* pulser_;
};
extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
diff --git a/modules/CIAO/connectors/AMI_CCM/descriptors/Plan.cdp b/modules/CIAO/connectors/AMI_CCM/descriptors/Plan.cdp
index 20016d2180a..c3888f6c917 100644
--- a/modules/CIAO/connectors/AMI_CCM/descriptors/Plan.cdp
+++ b/modules/CIAO/connectors/AMI_CCM/descriptors/Plan.cdp
@@ -258,6 +258,22 @@
</internalEndpoint>
</connection>
+ <connection>
+ <name>synch_foo_connection</name>
+ <internalEndpoint>
+ <portName>do_asynch_foo</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.Receiver" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>run_foo</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.Sender" />
+ </internalEndpoint>
+ </connection>
+
<artifact xmi:id="Hello_AMI_SvntArtifact">
<name>Hello.ImplementationArtifacts.AMIArtifacts.AMI_svnt</name>
<source/>