From ab639f59e1f98eda1efb92b6c04b0290a0710045 Mon Sep 17 00:00:00 2001 From: "William R. Otte" Date: Tue, 8 Dec 2009 21:56:31 +0000 Subject: Tue Dec 8 21:54:06 UTC 2009 William R. Otte --- .../DomainApplicationManager_Impl.cpp | 8 +++- .../DAnCE/NodeApplication/NodeApplication_Impl.cpp | 34 +++++++++++++++-- CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI.idl | 3 -- .../ami4ccm/examples/Hello/AMI/AMI_exec.cpp | 29 +++++++------- .../ami4ccm/examples/Hello/AMI/AMI_exec.h | 4 +- .../examples/Hello/Hello_Base/Hello_Base.idl | 44 +++++++++++----------- .../examples/Hello/Hello_Base/Hello_Base.mpc | 4 +- .../ami4ccm/examples/Hello/Sender/Hello_Sender.idl | 5 +-- .../examples/Hello/Sender/Hello_Sender_exec.cpp | 12 ------ .../examples/Hello/Sender/Hello_Sender_exec.h | 6 +-- .../ami4ccm/examples/Hello/descriptors/Plan.cdp | 22 ++--------- .../ami4ccm/examples/Hello/descriptors/run_test.pl | 3 -- 12 files changed, 81 insertions(+), 93 deletions(-) diff --git a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp index f9d70e37262..34871bd3938 100644 --- a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp +++ b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp @@ -335,7 +335,7 @@ DomainApplicationManager_Impl::split_plan (const Deployment::DeploymentPlan & pl Deployment::PlanConnectionDescription * connection_copied = 0; for (CORBA::ULong m = 0; m < child_plan.connection.length(); ++m) { - if (plan.connection[j].name == child_plan.connection[m].name) + if (ACE_OS::strcmp (plan.connection[j].name, child_plan.connection[m].name) == 0) { connection_copied = &child_plan.connection[m]; break; @@ -354,6 +354,12 @@ DomainApplicationManager_Impl::split_plan (const Deployment::DeploymentPlan & pl // Copy the endpoint CORBA::ULong const index_ep = connection_copied->internalEndpoint.length(); + + DANCE_DEBUG ((LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT ("Copying endpoint %u from connection into endpoint %u\n"), + k, index_ep)); + connection_copied->internalEndpoint.length (index_ep + 1); connection_copied->internalEndpoint[index_ep] = plan.connection[j].internalEndpoint[k]; connection_copied->internalEndpoint[index_ep].instanceRef = index_ins - 1; diff --git a/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp b/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp index 6ba94f41d6a..16194c001e3 100644 --- a/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp +++ b/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp @@ -1927,9 +1927,37 @@ NodeApplication_Impl::finishLaunch (const ::Deployment::Connections & providedRe { // What we should do with Cookie, returned from connect call??? DANCE_DEBUG((LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - set for receptacle\n"))); - this->connect_receptacle (obj.in(), - conn.internalEndpoint[0].portName.in(), - providedReference[i].endpoint[0].in()); + + if (conn.internalEndpoint.length () == 2 && + conn.internalEndpoint[1].kind == ::Deployment::LocalFacet) + { + ::Components::CCMObject_var facet = + ::Components::CCMObject::_narrow (providedReference[i].endpoint[0].in ()); + + ::CIAO::Deployment::Container_var cont = + ::CIAO::Deployment::Container::_narrow (this->instances_[conn.internalEndpoint[1].instanceRef]->container->ref.in ()); + + if (CORBA::is_nil (facet.in ()) || + CORBA::is_nil (cont.in ())) + { + DANCE_ERROR ((LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch -") + ACE_TEXT ("Unable to narrow all participants for a local facet connection\n"))); + throw ::Deployment::InvalidConnection ("", ""); + } + + this->connect_local_receptacle (facet.in (), + conn.internalEndpoint[1].portName.in (), + obj.in (), + conn.internalEndpoint[0].portName.in (), + cont.in ()); + } + else + { + this->connect_receptacle (obj.in(), + conn.internalEndpoint[0].portName.in(), + providedReference[i].endpoint[0].in()); + } + break; } case ::Deployment::EventEmitter: diff --git a/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI.idl b/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI.idl index e264aea4b8c..b409eb8c21d 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI.idl +++ b/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI.idl @@ -18,9 +18,6 @@ module Hello_AMI_AMI //uses the interface of the Receiver ('server') uses Hello::MyFoo my_foo_receiver; - - //uses the callback interface of the sender - uses Hello_AMI::AMI_MyFooCallback callback_my_foo; }; home AMIHome manages AMI diff --git a/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp b/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp index f243f9a2786..f6c49890d88 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp +++ b/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp @@ -70,10 +70,10 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl // Facet Executor Implementation Class: AMI_MyFoo_exec_i //============================================================ AMI_MyFoo_exec_i::AMI_MyFoo_exec_i ( - ::Hello_AMI::AMI_MyFooCallback_ptr foo_callback, ::Hello::MyFoo_ptr receiver_foo) - : foo_callback_ (::Hello_AMI::AMI_MyFooCallback::_duplicate (foo_callback)) { + // @@TODO: This is all sorts of wrong. We should be using the container ORB. + //initialize AMI client int argc = 2; ACE_TCHAR **argv = new ACE_TCHAR *[argc]; @@ -114,12 +114,12 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl void AMI_MyFoo_exec_i::sendc_foo ( - ::Hello_AMI::AMI_MyFooCallback_ptr /*ami_handler*/, + ::Hello_AMI::AMI_MyFooCallback_ptr ami_handler, const char * in_str) { printf ("AMI (FOO) :\tsendc_foo <%s>\n", in_str); ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = - new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (foo_callback_); + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); //Create a reply handler the CORBA-way Hello::AMI_MyFooHandler_var the_handler_var = handler->_this (); printf ("AMI (FOO) :\tSending string <%s> to AMI CORBA server\n", in_str); @@ -129,12 +129,12 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl void AMI_MyFoo_exec_i::sendc_hello ( - ::Hello_AMI::AMI_MyFooCallback_ptr /*ami_handler*/) + ::Hello_AMI::AMI_MyFooCallback_ptr ami_handler) { printf ("AMI (FOO) :\tsendc_hello\n"); ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = - new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (foo_callback_); + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); //Create a reply handler the CORBA-way Hello::AMI_MyFooHandler_var the_handler_var = handler->_this (); printf ("AMI (FOO) :\tCalling AMI CORBA server\n"); @@ -144,11 +144,11 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl void AMI_MyFoo_exec_i::sendc_get_rw_attrib ( - ::Hello_AMI::AMI_MyFooCallback_ptr /*ami_handler*/) + ::Hello_AMI::AMI_MyFooCallback_ptr ami_handler) { printf ("AMI (FOO) :\tsendc_get_rw_attrib\n"); ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = - new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (foo_callback_); + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); //Create a reply handler the CORBA-way Hello::AMI_MyFooHandler_var the_handler_var = handler->_this (); ami_foo_server_->sendc_get_rw_attrib (the_handler_var.in ()); @@ -157,12 +157,12 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl void AMI_MyFoo_exec_i::sendc_set_rw_attrib ( - ::Hello_AMI::AMI_MyFooCallback_ptr /*ami_handler*/, + ::Hello_AMI::AMI_MyFooCallback_ptr ami_handler, CORBA::Short rw_attrib) { printf ("AMI (FOO) :\tsendc_set_rw_attrib\n"); ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = - new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (foo_callback_); + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); //Create a reply handler the CORBA-way Hello::AMI_MyFooHandler_var the_handler_var = handler->_this (); printf ("AMI (FOO) : \tSet rw_attrib <%d>\n", rw_attrib); @@ -172,11 +172,11 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl void AMI_MyFoo_exec_i::sendc_get_ro_attrib ( - ::Hello_AMI::AMI_MyFooCallback_ptr /*ami_handler*/) + ::Hello_AMI::AMI_MyFooCallback_ptr ami_handler) { printf ("AMI (FOO) :\tsendc_get_ro_attrib\n"); ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = - new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (foo_callback_); + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); //Create a reply handler the CORBA-way Hello::AMI_MyFooHandler_var the_handler_var = handler->_this (); ami_foo_server_->sendc_get_ro_attrib (the_handler_var.in ()); @@ -203,10 +203,7 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl ::Hello_AMI::CCM_AMI_MyFoo_ptr AMI_exec_i::get_perform_asynch_my_foo (void) { - ::Hello_AMI::AMI_MyFooCallback_var foo_callback = - this->context_->get_connection_callback_my_foo (); - return new AMI_MyFoo_exec_i (foo_callback.in (), - receiver_foo_.in ()); + return new AMI_MyFoo_exec_i (receiver_foo_.in ()); } // Operations from Components::SessionComponent. diff --git a/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h b/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h index 2afed3b025f..e5c56d9e438 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h +++ b/CIAO/connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h @@ -59,8 +59,7 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl public virtual ::CORBA::LocalObject { public: - AMI_MyFoo_exec_i (::Hello_AMI::AMI_MyFooCallback_ptr foo_callback, - ::Hello::MyFoo_ptr receiver_foo); + AMI_MyFoo_exec_i (::Hello::MyFoo_ptr receiver_foo); virtual ~AMI_MyFoo_exec_i (void); virtual void @@ -85,7 +84,6 @@ namespace CIAO_Hello_AMI_AMI_AMI_Impl private: Hello::MyFoo_var ami_foo_server_; - ::Hello_AMI::AMI_MyFooCallback_ptr foo_callback_; }; class AMI_exec_i diff --git a/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl b/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl index cf356190ca7..34ed31d82ce 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl +++ b/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl @@ -9,37 +9,37 @@ module Hello_AMI { // callback interface from AMI-component to Sender component - interface AMI_MyFooCallback : ::Messaging::ReplyHandler - { - void foo (in long ami_return_val, in string answer); - void foo_excep (in Messaging::ExceptionHolder excep_holder); + local interface AMI_MyFooCallback : ::Messaging::ReplyHandler + { + void foo (in long ami_return_val, in string answer); + void foo_excep (in Messaging::ExceptionHolder excep_holder); - void hello (in long ami_return_val); - void hello_excep (in Messaging::ExceptionHolder excep_holder); + void hello (in long ami_return_val); + void hello_excep (in Messaging::ExceptionHolder excep_holder); - void get_rw_attrib (in short ami_return_val); - void get_rw_attrib_excep (in Messaging::ExceptionHolder excep_holder); + void get_rw_attrib (in short ami_return_val); + void get_rw_attrib_excep (in Messaging::ExceptionHolder excep_holder); - void set_rw_attrib (); - void set_rw_attrib_excep (in Messaging::ExceptionHolder excep_holder); + void set_rw_attrib (); + void set_rw_attrib_excep (in Messaging::ExceptionHolder excep_holder); - void get_ro_attrib (in short ami_return_val); - void get_ro_attrib_excep (in Messaging::ExceptionHolder excep_holder); - }; + void get_ro_attrib (in short ami_return_val); + void get_ro_attrib_excep (in Messaging::ExceptionHolder excep_holder); + }; // AMI component. Sender calls AMI-component and AMI-component calls Receiver // using the AMI_foo interface. // Example of a global reply handler - interface AMI_MyFoo - { - void sendc_foo (in AMI_MyFooCallback ami_handler, in string in_str); - void sendc_hello (in AMI_MyFooCallback ami_handler); + local interface AMI_MyFoo + { + void sendc_foo (in AMI_MyFooCallback ami_handler, in string in_str); + void sendc_hello (in AMI_MyFooCallback ami_handler); - //asynch method for handling attributes - void sendc_get_rw_attrib (in AMI_MyFooCallback ami_handler); - void sendc_set_rw_attrib (in AMI_MyFooCallback ami_handler, in short rw_attrib); - void sendc_get_ro_attrib (in AMI_MyFooCallback ami_handler); - }; + //asynch method for handling attributes + void sendc_get_rw_attrib (in AMI_MyFooCallback ami_handler); + void sendc_set_rw_attrib (in AMI_MyFooCallback ami_handler, in short rw_attrib); + void sendc_get_ro_attrib (in AMI_MyFooCallback ami_handler); + }; }; #endif /* HELLO_BASE_IDL */ diff --git a/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc b/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc index 9e57b95951a..572ad2500e2 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc +++ b/CIAO/connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc @@ -11,7 +11,6 @@ project(AMI_Hello_idl_gen) : componentidldefaults, ami { -Wb,exec_export_include=Hello_exec_export.h -I.. IDL_Files { - Hello.idl } } @@ -23,7 +22,6 @@ project(AMI_Hello_lem_gen) : ciaoidldefaults { -Wb,export_include=Hello_exec_export.h -I.. -SS IDL_Files { - HelloE.idl } } @@ -38,6 +36,7 @@ project(AMI_Hello_Base_idl_gen) : componentidldefaults { IDL_Files { Hello_Base.idl + Hello.idl } } @@ -50,6 +49,7 @@ project(AMI_Hello_Base_lem_gen) : ciaoidldefaults { IDL_Files { Hello_BaseE.idl + HelloE.idl } } diff --git a/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl b/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl index 766847fced3..6af31bce82b 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl +++ b/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl @@ -13,14 +13,11 @@ module Hello_AMI { component Sender { - // for asynch invocation. + // for asynch invocation. @@implied uses Hello_AMI::AMI_MyFoo run_asynch_my_foo; // for synchronous invocation uses Hello::MyFoo run_my_foo; - - //provides the callback function/exception for the AMI component. - provides Hello_AMI::AMI_MyFooCallback the_my_foo_callback; }; home SenderHome manages Sender diff --git a/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp b/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp index 22272db56d5..15c66c77a5f 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp +++ b/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp @@ -281,18 +281,6 @@ namespace CIAO_Hello_AMI_Sender_Impl // Component attributes. // Port operations. - - ::Hello_AMI::CCM_AMI_MyFooCallback_ptr - Sender_exec_i::get_the_my_foo_callback () - { - if (CORBA::is_nil (global_foo_callback_)) - { - global_foo_callback_ = new MyFoo_callback_exec_i (); - } - - return global_foo_callback_; - } - // Operations from Components::SessionComponent. void diff --git a/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h b/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h index 976a4c5981c..25d88d09451 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h +++ b/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h @@ -140,11 +140,7 @@ namespace CIAO_Hello_AMI_Sender_Impl // Component attributes. // Port operations. - - virtual ::Hello_AMI::CCM_AMI_MyFooCallback_ptr - get_the_my_foo_callback (void); - // Operations from Components::SessionComponent. - + virtual void set_session_context ( ::Components::SessionContext_ptr ctx); diff --git a/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp b/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp index 72f2cd3c627..3f8b39ff7aa 100644 --- a/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp +++ b/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp @@ -194,7 +194,7 @@ Hello.ComponentImplementations.HelloImplementation.Hello.AMI - AMI + Sender @@ -212,32 +212,16 @@ run_asynch_foo_connection - - perform_asynch_my_foo - true - Facet - - run_asynch_my_foo false SimplexReceptacle - - - - foo_callback_connection - the_my_foo_callback + perform_asynch_my_foo true - Facet - - - - callback_my_foo - false - SimplexReceptacle + LocalFacet diff --git a/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl b/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl index be04df44296..f6f7d3e7c77 100755 --- a/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl +++ b/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl @@ -44,9 +44,6 @@ $status = 0; $cdp_file = "Plan.cdp"; PerlACE::add_lib_path ('../lib'); -$ENV{"DANCE_TRACE_ENABLE"} = 0; -$ENV{"CIAO_TRACE_ENABLE"} = 0; - sub create_targets { # naming service -- cgit v1.2.1