summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp')
-rw-r--r--CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp140
1 files changed, 74 insertions, 66 deletions
diff --git a/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp b/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp
index 5f7a39dda14..ee43ed5114a 100644
--- a/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp
+++ b/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp
@@ -339,80 +339,88 @@ namespace DAnCE
this,
this->node_applications_.current_size ()));
- // create completion counter
- DA_NAM_ReplyHandlerImpl::Counter* _cp = 0;
- ACE_NEW_THROW_EX (_cp,
- DA_NAM_ReplyHandlerImpl::Counter (this->node_applications_.current_size (),
- this,
- _ch_ptr),
- CORBA::NO_MEMORY ());
- DA_NAM_ReplyHandlerImpl::Counter_AutoPtr _counter_ptr (_cp);
-
- for (TApp2Mgr::iterator iter = this->node_applications_.begin();
- iter != this->node_applications_.end();
- ++iter)
+ if (this->node_applications_.current_size () > 0)
{
- ACE_CString node_id;
- this->app_node_ids_.find ((*iter).ext_id_, node_id);
+ // create completion counter
+ DA_NAM_ReplyHandlerImpl::Counter* _cp = 0;
+ ACE_NEW_THROW_EX (_cp,
+ DA_NAM_ReplyHandlerImpl::Counter (this->node_applications_.current_size (),
+ this,
+ _ch_ptr),
+ CORBA::NO_MEMORY ());
+ DA_NAM_ReplyHandlerImpl::Counter_AutoPtr _counter_ptr (_cp);
+
+ for (TApp2Mgr::iterator iter = this->node_applications_.begin();
+ iter != this->node_applications_.end();
+ ++iter)
+ {
+ ACE_CString node_id;
+ this->app_node_ids_.find ((*iter).ext_id_, node_id);
- try
- {
- // create and activate reply handler
- DA_NAM_ReplyHandlerImpl* da_nam_rh_servant = 0;
- ACE_NEW_THROW_EX (da_nam_rh_servant,
- DAnCE::DA_NAM_ReplyHandlerImpl (this,
- (*iter).int_id_,
- node_id.c_str (),
- _counter_ptr),
- CORBA::NO_MEMORY ());
+ try
+ {
+ // create and activate reply handler
+ DA_NAM_ReplyHandlerImpl* da_nam_rh_servant = 0;
+ ACE_NEW_THROW_EX (da_nam_rh_servant,
+ DAnCE::DA_NAM_ReplyHandlerImpl (this,
+ (*iter).int_id_,
+ node_id.c_str (),
+ _counter_ptr),
+ CORBA::NO_MEMORY ());
- PortableServer::ObjectId_var id = this->poa_->activate_object (da_nam_rh_servant);
+ PortableServer::ObjectId_var id = this->poa_->activate_object (da_nam_rh_servant);
- CORBA::Object_var ref = this->poa_->id_to_reference (id.in());
+ CORBA::Object_var ref = this->poa_->id_to_reference (id.in());
- ::Deployment::AMI_NodeApplicationManagerHandler_var da_nam_handler =
- ::Deployment::AMI_NodeApplicationManagerHandler::_narrow (ref.in ());
+ ::Deployment::AMI_NodeApplicationManagerHandler_var da_nam_handler =
+ ::Deployment::AMI_NodeApplicationManagerHandler::_narrow (ref.in ());
- DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
- ACE_TEXT("Plan %C DomainApplication[%@] : ")
- ACE_TEXT("calling destroyApplication on node application manager for node %C\n"),
- this->planUUID_.c_str (),
- this,
- node_id.c_str ()));
+ DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
+ ACE_TEXT("Plan %C DomainApplication[%@] : ")
+ ACE_TEXT("calling destroyApplication on node application manager for node %C\n"),
+ this->planUUID_.c_str (),
+ this,
+ node_id.c_str ()));
- (*iter).int_id_->sendc_destroyApplication (da_nam_handler.in (),
- (*iter).ext_id_.in());
+ (*iter).int_id_->sendc_destroyApplication (da_nam_handler.in (),
+ (*iter).ext_id_.in());
- DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
- ACE_TEXT("destroyApplication has been called on node application manager\n")));
- }
- catch (CORBA::Exception& ex)
- {
- DANCE_ERROR (1, (LM_ERROR, DLINFO
- ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
- ACE_TEXT("DomainApplication[%@] caught a CORBA exception handling node %C : %C\n"),
- this,
- node_id.c_str (),
- ex._info ().c_str ()));
- // mark failure
- _counter_ptr->increment_fail_count ();
- // mark off node
- _counter_ptr->decrement_exec_count ();
- // continue for next node
- }
- catch (...)
- {
- DANCE_ERROR (1, (LM_ERROR, DLINFO
- ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
- ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"),
- this,
- node_id.c_str ()));
- // mark failure
- _counter_ptr->increment_fail_count ();
- // mark off node
- _counter_ptr->decrement_exec_count ();
- // continue for next node
- }
+ DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
+ ACE_TEXT("destroyApplication has been called on node application manager\n")));
+ }
+ catch (CORBA::Exception& ex)
+ {
+ DANCE_ERROR (1, (LM_ERROR, DLINFO
+ ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
+ ACE_TEXT("DomainApplication[%@] caught a CORBA exception handling node %C : %C\n"),
+ this,
+ node_id.c_str (),
+ ex._info ().c_str ()));
+ // mark failure
+ _counter_ptr->increment_fail_count ();
+ // mark off node
+ _counter_ptr->decrement_exec_count ();
+ // continue for next node
+ }
+ catch (...)
+ {
+ DANCE_ERROR (1, (LM_ERROR, DLINFO
+ ACE_TEXT("DomainApplication_Impl::destroyApplication - ")
+ ACE_TEXT("DomainApplication[%@] caught a unknown exception handling node %C\n"),
+ this,
+ node_id.c_str ()));
+ // mark failure
+ _counter_ptr->increment_fail_count ();
+ // mark off node
+ _counter_ptr->decrement_exec_count ();
+ // continue for next node
+ }
+ }
+ }
+ else
+ {
+ // no node applications to clean up so finish immediately
+ _ch_ptr->handle_completion (this);
}
DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::destroyApplication - finished\n")));