diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp')
-rw-r--r-- | TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp | 165 |
1 files changed, 143 insertions, 22 deletions
diff --git a/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp b/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp index 9045e47a136..7c4de13585f 100644 --- a/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp +++ b/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp @@ -76,7 +76,7 @@ void CIAO::NodeApplication_Impl::finishLaunch_i ( const Deployment::Connections & providedReference, CORBA::Boolean start, - CORBA::Boolean add_connection + CORBA::Boolean add_connection ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, Deployment::StartError, @@ -92,6 +92,7 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( for (CORBA::ULong i = 0; i < length; ++i) { ACE_CString name = providedReference[i].instanceName.in (); + Components::CCMObject_var comp; if (this->component_objref_map_.find (name, comp) != 0) @@ -105,6 +106,12 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( ACE_TRY_THROW (Deployment::InvalidConnection ()); } + if (CORBA::is_nil (comp.in ())) + { + ACE_DEBUG ((LM_DEBUG, "comp is nil\n")); + throw Deployment::InvalidConnection (); + } + Components::EventConsumerBase_var consumer; // Since we know CCMObject inherits from @@ -128,15 +135,33 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( if (add_connection) { - ::Components::Cookie_var cookie = - comp->connect (providedReference[i].portName.in (), - providedReference[i].endpoint.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + try + { + ::Components::Cookie_var cookie = + comp->connect (providedReference[i].portName.in (), + providedReference[i].endpoint.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; - ACE_CString key = (*create_connection_key (providedReference[i])); - ACE_DEBUG ((LM_ERROR, "[BINGDING KEY]: %s\n", key.c_str ())); - this->cookie_map_.rebind (key, cookie); + ACE_CString key = (*create_connection_key (providedReference[i])); + + if (CIAO::debug_level () > 10) + ACE_DEBUG ((LM_ERROR, "[BINGDING KEY]: %s\n", key.c_str ())); + + this->cookie_map_.rebind (key, cookie); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + "CIAO (%P|%t) - NodeApplicationImpl.cpp, " + "CIAO::NodeApplication_Impl::finishLaunch\n" + "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] connection FAILED.\n", + providedReference[i].instanceName.in (), + providedReference[i].portName.in (), + providedReference[i].endpointInstanceName.in (), + providedReference[i].endpointPortName.in ())); + throw; + } if (CIAO::debug_level () > 6) { @@ -154,7 +179,10 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( { ACE_CString key = (*create_connection_key (providedReference[i])); ::Components::Cookie_var cookie; - ACE_DEBUG ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ())); + + if (CIAO::debug_level () > 10) + ACE_DEBUG ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ())); + if (this->cookie_map_.find (key, cookie) != 0) { ACE_DEBUG ((LM_ERROR, "Error: Cookie Not Found!\n")); @@ -178,15 +206,17 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( } break; - // @@ (GD) A place holder where the Event Channel connections - // should be set up. + // @@ (GD) A place holder where the Event Channel connections + // should be set up. case Deployment::EventEmitter: + ACE_DEBUG ((LM_DEBUG, "NA_I: EventEmitter\n")); consumer = Components::EventConsumerBase:: _narrow (providedReference[i].endpoint.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "Narrow compelted\n")); if (CORBA::is_nil (consumer.in ())) { @@ -253,10 +283,17 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( case Deployment::EventPublisher: + ACE_DEBUG ((LM_DEBUG, "NA_I: EventPublisher - %s:%s\n", + providedReference[i].instanceName.in (), + providedReference[i].portName.in ())); + ACE_DEBUG ((LM_DEBUG, "NA_I: endPoint instance:port %s:%s\n", + providedReference[i].endpointInstanceName.in (), + providedReference[i].endpointPortName.in ())); consumer = Components::EventConsumerBase:: _narrow (providedReference[i].endpoint.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "NA_I: Narrow completed\n")); if (CORBA::is_nil (consumer.in ())) { @@ -290,7 +327,9 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( ACE_CString key = (*create_connection_key (providedReference[i])); this->cookie_map_.rebind (key, cookie); - ACE_DEBUG ((LM_ERROR, "[BINGDING KEY]: %s\n", key.c_str ())); + + if (CIAO::debug_level () > 10) + ACE_DEBUG ((LM_ERROR, "[BINGDING KEY]: %s\n", key.c_str ())); if (CIAO::debug_level () > 6) { @@ -308,7 +347,10 @@ CIAO::NodeApplication_Impl::finishLaunch_i ( { ACE_CString key = (*create_connection_key (providedReference[i])); ::Components::Cookie_var cookie; - ACE_DEBUG ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ())); + + if (CIAO::debug_level () > 9) + ACE_DEBUG ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ())); + if (this->cookie_map_.find (key, cookie) != 0) { ACE_DEBUG ((LM_ERROR, "Error: Cookie Not Found!\n")); @@ -405,9 +447,12 @@ CIAO::NodeApplication_Impl::ciao_passivate (ACE_ENV_SINGLE_ARG_DECL) iter != end; ++iter) { + ACE_DEBUG ((LM_DEBUG, "passivating %s\n", + (*iter).ext_id_.c_str ())); ((*iter).int_id_)->ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; } + ACE_DEBUG ((LM_DEBUG, "exiting passivate\n")); } Deployment::ComponentInfos * @@ -488,7 +533,7 @@ CIAO::NodeApplication_Impl::install ( { //Since we know the type ahead of time...narrow is omitted here. if (this->component_objref_map_.bind ( - retv[len].component_instance_name.in(), + retv[len].component_instance_name.in(), Components::CCMObject::_duplicate (retv[len]. component_ref.in ()))) { @@ -522,6 +567,9 @@ CIAO::NodeApplication_Impl::remove_component (const char * inst_name ACE_THROW_SPEC ((::CORBA::SystemException, ::Components::RemoveFailure)) { + ACE_DEBUG ((LM_DEBUG, "NA_I: removing component %s\n", + inst_name)); + // Fetch the container object reference from the componet_container_map ::Deployment::Container_var container_ref; if (this->component_container_map_.find (inst_name, container_ref) != 0) @@ -542,23 +590,90 @@ CIAO::NodeApplication_Impl::remove_component (const char * inst_name } void +CIAO::NodeApplication_Impl::passivate_component (const char * name + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((::CORBA::SystemException, + ::Components::RemoveFailure)) +{ + Components::CCMObject_var comp; + + if (this->component_objref_map_.find (name, comp) != 0) + { + ACE_ERROR ((LM_ERROR, + "CIAO (%P|%t) - NodeApplication_Impl.cpp, " + "CIAO::NodeApplication_Impl::passivate_component, " + "invalid instance [%s] \n", + name)); + ACE_TRY_THROW (Deployment::StartError ()); + } + + if (CORBA::is_nil (comp.in ())) + { + ACE_DEBUG ((LM_DEBUG, "comp is nil\n")); + throw Deployment::StartError (); + } + + comp->ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void +CIAO::NodeApplication_Impl::activate_component (const char * name + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((::CORBA::SystemException, + ::Components::RemoveFailure)) +{ + Components::CCMObject_var comp; + + if (this->component_objref_map_.find (name, comp) != 0) + { + ACE_ERROR ((LM_ERROR, + "CIAO (%P|%t) - NodeApplication_Impl.cpp, " + "CIAO::NodeApplication_Impl::passivate_component, " + "invalid instance [%s] \n", + name)); + ACE_TRY_THROW (Deployment::StartError ()); + } + + if (CORBA::is_nil (comp.in ())) + { + ACE_DEBUG ((LM_DEBUG, "comp is nil\n")); + throw Deployment::StartError (); + } + + comp->ciao_preactivate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + comp->ciao_activate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + comp->ciao_postactivate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + + +void CIAO::NodeApplication_Impl::remove (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { // If we still have components installed, then do nothing if (this->component_objref_map_.current_size () != 0) - return; - + { + ACE_DEBUG ((LM_DEBUG, "NA: remove: still have components, doing nothing\n")); + return; + } // For each container, invoke <remove> operation to remove home and components. const CORBA::ULong set_size = this->container_set_.size (); for (CORBA::ULong i = 0; i < set_size; ++i) { + ACE_DEBUG ((LM_DEBUG, "NA: calling remove on container %i\n")); this->container_set_.at(i)->remove (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; } // Remove all containers // Maybe we should also deactivate container object reference. + ACE_DEBUG ((LM_DEBUG, "NA: remove all\n")); this->container_set_.remove_all (); if (CIAO::debug_level () > 1) @@ -566,14 +681,17 @@ CIAO::NodeApplication_Impl::remove (ACE_ENV_SINGLE_ARG_DECL) //For static deployment, ORB will be shutdown in the Static_NodeManager if (this->static_entrypts_maps_ == 0) - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); + { + this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); + ACE_DEBUG ((LM_DEBUG, "NA: shutdown\n")); + } } // Create a container interface, which will be hosted in this NodeApplication. ::Deployment::Container_ptr CIAO::NodeApplication_Impl::create_container ( - const ::Deployment::Properties &properties + const ::Deployment::Properties &properties ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, ::Components::CreateFailure, @@ -694,6 +812,9 @@ create_connection_key (const Deployment::Connection & connection) (*retv) += connection.portName.in (); (*retv) += connection.endpointInstanceName.in (); (*retv) += connection.endpointPortName.in (); - ACE_DEBUG ((LM_ERROR, "The key is: %s\n", (*retv).c_str ())); + + if (CIAO::debug_level () > 3) + ACE_DEBUG ((LM_ERROR, "The key is: %s\n", (*retv).c_str ())); + return retv; } |