void handle_sigint ( int signal ) { std::cout << "\nGot Crtl-C" << std::endl; std::cerr << "..... unbind in NameService" << std::endl; // // unbind in naming service // CORBA::Object_var obj; CosNaming::NamingContext_var nameService; char hostname[256]; gethostname(hostname, 256); CosNaming::Name name; name.length(3); name[0].id = CORBA::string_dup("Qedo"); name[0].kind = CORBA::string_dup(""); name[1].id = CORBA::string_dup("ComponentInstallation"); name[1].kind = CORBA::string_dup(""); name[2].id = CORBA::string_dup(hostname); name[2].kind = CORBA::string_dup(""); try { obj = orb->resolve_initial_references("NameService"); nameService = CosNaming::NamingContext::_narrow(obj.in()); nameService->unbind(name); } catch (const CORBA::Exception&) { std::cerr << "..... could not unbind" << std::endl; } exit(1); }
void CNamingTreeCtrl::OnObjectpopupUnbind() { // TODO: Add your command handler code here if(MessageBox(ACE_TEXT ("Are you sure you want to unbind this object?"), ACE_TEXT ("Confirm"), MB_YESNO | MB_ICONEXCLAMATION) != IDYES) { return; } HTREEITEM hItem = GetSelectedItem(); HTREEITEM hParent = GetParentItem(hItem); if(!hParent) { return; } CNamingObject* pObject = GetTreeObject(hItem); CNamingObject* pParent= GetTreeObject(hParent); CosNaming::NamingContext_var Context = pParent->NamingContext(); try { Context->unbind(pObject->Name()); ClearChildren(hItem); delete pObject; DeleteItem(hItem); } catch(CORBA::Exception& ex) { MessageBox(ACE_TEXT_CHAR_TO_TCHAR (ex._rep_id()), ACE_TEXT ("CORBA::Exception")); } }
void CNamingTreeCtrl::OnContextPopupDestroy() { // TODO: Add your command handler code here if(MessageBox(ACE_TEXT ("Are you sure you want to destroy this context?"), ACE_TEXT ("Confirm"), MB_YESNO | MB_ICONEXCLAMATION) != IDYES) { return; } HTREEITEM hItem = GetSelectedItem(); HTREEITEM hParent = GetParentItem(hItem); if(!hParent) { return; } CNamingObject* pObject = GetTreeObject(hItem); CNamingObject* pParent= GetTreeObject(hParent); CosNaming::NamingContext_var Parent = pParent->NamingContext(); try { // First try to destroy, it will raise exception if its not empty CosNaming::NamingContext_var Context = pObject->NamingContext(); Context->destroy(); // Ok its destroyed, clean up any children we might have laying around ClearChildren(hItem); DeleteItem(hItem); // do the unbind Parent->unbind(pObject->Name()); delete pObject; } catch(CORBA::Exception& ex) { MessageBox(ACE_TEXT_CHAR_TO_TCHAR (ex._rep_id()), ACE_TEXT ("CORBA::Exception")); } }
void handle_sigint ( int sig ) { #ifdef HAVE_SIGACTION struct sigaction act; /* Assign sig_chld as our SIGINT handler */ act.sa_handler = SIG_IGN; /* We don't want to block any other signals in this example */ sigemptyset(&act.sa_mask); sigaction(SIGINT,&act,0); #else signal(sig, SIG_IGN); #endif std::cout << "\nGot Crtl-C" << std::endl; std::cerr << "..... unbind in NameService" << std::endl; // // unbind in naming service // CORBA::Object_var obj; CosNaming::NamingContext_var nameService; char hostname[256]; gethostname(hostname, 256); CosNaming::Name name; name.length(3); name[0].id = CORBA::string_dup("Qedo"); name[0].kind = CORBA::string_dup(""); name[1].id = CORBA::string_dup("ComponentInstallation"); name[1].kind = CORBA::string_dup(""); name[2].id = CORBA::string_dup(hostname); name[2].kind = CORBA::string_dup(""); try { obj = orb->resolve_initial_references("NameService"); nameService = CosNaming::NamingContext::_narrow(obj.in()); nameService->unbind(name); } catch (const CORBA::Exception&) { std::cerr << "..... could not unbind" << std::endl; } catch(...) { std::cerr << "..... error in signal handler" << std::endl; } exit(1); }
void TAO_Hash_Naming_Context::unbind (const CosNaming::Name& n) { // Check to make sure this object didn't have <destroy> method // invoked on it. if (this->destroyed_) throw CORBA::OBJECT_NOT_EXIST (); // Get the length of the name. CORBA::ULong const name_len = n.length (); // Check for invalid name. if (name_len == 0) throw CosNaming::NamingContext::InvalidName(); // If we received compound name, resolve it to get the context in // which the unbinding should take place, then perform the unbinding // on target context. if (name_len > 1) { CosNaming::NamingContext_var context = this->get_context (n); CosNaming::Name simple_name; simple_name.length (1); simple_name[0] = n[name_len - 1]; try { context->unbind (simple_name); } catch (const CORBA::SystemException&) { throw CosNaming::NamingContext::CannotProceed( context.in (), simple_name); } } // If we received a simple name, we need to unbind it in this // context. else { ACE_WRITE_GUARD_THROW_EX (TAO_SYNCH_RW_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); if (this->context_->unbind (n[0].id, n[0].kind) == -1) throw CosNaming::NamingContext::NotFound (CosNaming::NamingContext::missing_node, n); } }
void Test_xyz_serverTAOLayer::unregister_objects() { if (init_) { // unbind from naming service CosNaming::NamingContext_var nc; if (vect_ref_name_ns_.size() != 0) { nc = resolve_init<CosNaming::NamingContext>(orb().in(), "NameService"); } std::vector<std::string>::iterator it_ns; for (it_ns = vect_ref_name_ns_.begin(); it_ns != vect_ref_name_ns_.end(); it_ns++) { CosNaming::Name object_ref_name(1); object_ref_name.length (1); object_ref_name[0].id = CORBA::string_dup(it_ns->c_str()); nc->unbind(object_ref_name); } vect_ref_name_ns_.clear(); // unbind from iortable IORTable::Table_var ior_table; if (vect_ref_name_iortable_.size() != 0) { ior_table = resolve_init<IORTable::Table>(orb().in(), "IORTable"); } std::vector<std::string>::iterator it_ior; for (it_ior = vect_ref_name_iortable_.begin(); it_ior != vect_ref_name_iortable_.end(); it_ior++) { ior_table->unbind(it_ior->c_str()); } vect_ref_name_iortable_.clear(); } }
void handle_sigint ( int sig ) { #ifdef HAVE_SIGACTION struct sigaction act; /* Assign sig_chld as our SIGINT handler */ act.sa_handler = SIG_IGN; /* We don't want to block any other signals in this example */ sigemptyset(&act.sa_mask); sigaction(SIGINT,&act,0); #else signal(sig, SIG_IGN); #endif std::cout << "\nGot Crtl-C" << std::endl; std::cerr << "..... unbind in NameService" << std::endl; // // build name for name service // CORBA::Object_var obj; CosNaming::NamingContext_var nameService; CosNaming::Name name; name.length(2); name[0].id = CORBA::string_dup("Qedo"); name[0].kind = CORBA::string_dup(""); name[1].id = CORBA::string_dup("HomeFinder"); name[1].kind = CORBA::string_dup(""); // // unbind name in name service // try { // // try to get name service from config values // std::string ns = Qedo::ConfigurationReader::instance()->lookup_config_value( "/General/NameService" ); if( !ns.empty() ) { try { obj = orb->string_to_object( ns.c_str() ); } catch(...) { NORMAL_ERR2( "qassf: can't resolve NameService ", ns ); } NORMAL_OUT2( "qassf: NameService is ", ns ); } // // try to get naming service from orb // else { try { obj = orb->resolve_initial_references( "NameService" ); } catch (const CORBA::ORB::InvalidName&) { NORMAL_ERR( "qassf: can't resolve NameService from ORB" ); } if (CORBA::is_nil(obj.in())) { NORMAL_ERR( "qassf: NameService is a nil object reference" ); } } try { nameService = CosNaming::NamingContext::_narrow( obj.in() ); } catch (const CORBA::Exception&) { NORMAL_ERR( "qassf: NameService is not running" ); } if( CORBA::is_nil(nameService.in()) ) { NORMAL_ERR( "qassf: NameService is not a NamingContext object reference" ); } if (!CORBA::is_nil(nameService.in())) { nameService->unbind(name); } } catch (const CORBA::Exception&) { std::cerr << "..... could not unbind" << std::endl; } catch(...) { std::cerr << "..... error in signal handler" << std::endl; } orb->shutdown(false); }