CosNaming::NamingContext_ptr TAO_Transient_Naming_Context::new_context (void) { ACE_GUARD_THROW_EX (TAO_SYNCH_RECURSIVE_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); // Check to make sure this object didn't have <destroy> method // invoked on it. if (this->destroyed_) throw CORBA::OBJECT_NOT_EXIST (); // Generate a POA id for the new context. char poa_id[BUFSIZ]; ACE_OS::sprintf (poa_id, "%s_%d", this->poa_id_.c_str (), this->counter_++); // Create a new context. CosNaming::NamingContext_var result = make_new_context (this->poa_.in (), poa_id, this->transient_context_->total_size ()); return result._retn (); }
Web_Server::Iterator_Factory_ptr get_iterator (CORBA::ORB_ptr o) { CORBA::ORB_var orb = CORBA::ORB::_duplicate (o); // Get a reference to the Name Service. CORBA::Object_var obj = orb->resolve_initial_references ("NameService"); // Narrow to a Naming Context CosNaming::NamingContext_var nc = CosNaming::NamingContext::_narrow (obj.in ()); if (CORBA::is_nil (obj.in ())) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("Nil reference to Name Service\n"))); return Web_Server::Iterator_Factory::_nil (); } // Create a name. CosNaming::Name name; name.length (1); name[0].id = CORBA::string_dup ("Iterator_Factory"); name[0].kind = CORBA::string_dup (""); obj = nc->resolve (name); Web_Server::Iterator_Factory_ptr factory = Web_Server::Iterator_Factory::_narrow (obj.in ()); return factory; }
void CNamingTreeCtrl::OnContextPopupBindContext() { // TODO: Add your command handler code here CBindDialog Dialog(true, m_pORB); if(Dialog.DoModal() != IDOK) { return; } try { CNamingObject* pObject = GetTreeObject(); CosNaming::NamingContext_var Context = pObject->NamingContext(); if(CORBA::is_nil(Context.in ())) { return; } CosNaming::NamingContext_var NewContext = CosNaming::NamingContext::_narrow(Dialog.GetObject()); if(CORBA::is_nil(NewContext.in ())) { AfxMessageBox(ACE_TEXT ("Object is not a CosNaming::NamingContext")); return; } Context->bind_context(Dialog.GetName(), NewContext); OnContextPopupRefresh(); } catch(CORBA::Exception& ex) { MessageBox(ACE_TEXT_CHAR_TO_TCHAR (ex._rep_id()), ACE_TEXT ("CORBA::Exception")); } }
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")); } }
/*! * @if jp * @brief 途中のコンテキストを再帰的に bind しながら Object を bind する * @else * @brief Bind intermediate context recursively and bind object * @endif */ void CorbaNaming::bindRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name& name, CORBA::Object_ptr obj) throw (SystemException, CannotProceed, InvalidName, AlreadyBound) { CORBA::ULong len(name.length()); CosNaming::NamingContext_var cxt; cxt = CosNaming::NamingContext::_duplicate(context); for (CORBA::ULong i = 0; i < len; ++i) { if (i == (len - 1)) { // this operation may throw AlreadyBound, cxt->bind(subName(name, i, i), obj); return; } else { // If the context is not a NamingContext, CannotProceed is thrown if (isNamingContext(cxt)) cxt = bindOrResolveContext(cxt, subName(name, i, i)); else throw CannotProceed(cxt, subName(name, i)); } } return; }
void TAO_Hash_Naming_Context::bind_context (const CosNaming::Name &n, CosNaming::NamingContext_ptr nc) { // Check to make sure this object didn't have <destroy> method // invoked on it. if (this->destroyed_) throw CORBA::OBJECT_NOT_EXIST (); // Do not allow binding of nil context reference. if (CORBA::is_nil (nc)) throw CORBA::BAD_PARAM (); // 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 binding should take place, then perform the binding 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->bind_context (simple_name, nc); } catch (const CORBA::SystemException&) { throw CosNaming::NamingContext::CannotProceed( context.in (), simple_name); } } // If we received a simple name, we need to bind it in this context. else { ACE_WRITE_GUARD_THROW_EX (TAO_SYNCH_RW_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); // Try binding the name. int result = this->context_->bind (n[0].id, n[0].kind, nc, CosNaming::ncontext); if (result == 1) throw CosNaming::NamingContext::AlreadyBound(); // Something went wrong with the internal structure else if (result == -1) throw CORBA::INTERNAL (); } }
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::OnContextpopupBindnewcontext() { // TODO: Add your command handler code here HTREEITEM hItem = GetSelectedItem(); CNamingObject* pObject = GetTreeObject(hItem); CosNaming::NamingContext_var Context = pObject->NamingContext(); if(CORBA::is_nil(Context.in ())) { return; } CBindNewContext Dialog; if(Dialog.DoModal() != IDOK) { return; } try { CosNaming::NamingContext_var NewContext = Context->new_context(); Context->bind_context(Dialog.GetName(), NewContext); OnContextPopupRefresh(); } catch(CORBA::Exception& ex) { MessageBox(ACE_TEXT_CHAR_TO_TCHAR (ex._rep_id()), ACE_TEXT ("CORBA::Exception")); } }
void VOmniORBHelper::nsRegisterObject(CORBA::Object_ptr obj, const char* program, const char* object, int telescopenumber) throw(CORBA::SystemException, CosNaming::NamingContext::NotFound, CosNaming::NamingContext::CannotProceed, CosNaming::NamingContext::InvalidName, CosNaming::NamingContext::AlreadyBound) { ZThread::Guard<ZThread::RecursiveMutex> guard(m_mutex); CosNaming::NamingContext_var root = nsRootContext(); CosNaming::Name_var name = nsPathToObjectName(program, object, telescopenumber); for(unsigned int n=0; n<name->length()-1; n++) { CosNaming::Name_var child_name = name; child_name->length(n+1); try { CORBA::Object_var object = root->resolve(child_name); } catch(CosNaming::NamingContext::NotFound) { CosNaming::NamingContext_var child = root->bind_new_context(child_name); } } root->rebind(name,obj); }
int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { try { // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); //Get reference to Root POA CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" ); PortableServer::POA_var poa = PortableServer::POA::_narrow( obj.in() ); // Activate POA Manager PortableServer::POAManager_var mgr = poa->the_POAManager(); mgr->activate(); // Find the Naming Service obj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var root = CosNaming::NamingContext::_narrow(obj.in()); if (CORBA::is_nil(root.in())) { std::cerr << "Nil Naming Context reference" << std::endl; return 1; } // Bind the example Naming Context, if necessary CosNaming::Name name; name.length( 1 ); name[0].id = CORBA::string_dup("example"); try { obj = root->resolve(name); } catch(const CosNaming::NamingContext::NotFound&) { CosNaming::NamingContext_var dummy = root->bind_new_context(name); } // Bind the Messenger object name.length(2); name[1].id = CORBA::string_dup("Messenger"); // Create an object PortableServer::Servant_var<Messenger_i> servant = new Messenger_i; PortableServer::ObjectId_var oid = poa->activate_object(servant.in()); obj = poa->id_to_reference(oid.in()); Messenger_var messenger = Messenger::_narrow(obj.in()); root->rebind(name, messenger.in()); std::cout << "Messenger object bound in Naming Service" << std::endl; // Accept requests orb->run(); orb->destroy(); } catch(const CORBA::Exception& ex) { std::cerr << "server: Caught a CORBA::Exception: " << ex << std::endl; return 1; } return 0; }
static CORBA::Object_ptr getObjectReference(CORBA::ORB_ptr orb) { CosNaming::NamingContext_var rootContext; try { // Obtain a reference to the root context of the Name service: CORBA::Object_var obj; obj = orb->resolve_initial_references("NameService"); // Narrow the reference returned. rootContext = CosNaming::NamingContext::_narrow(obj); if( CORBA::is_nil(rootContext) ) { cerr << "Failed to narrow the root naming context." << endl; return CORBA::Object::_nil(); } } catch (CORBA::NO_RESOURCES&) { cerr << "Caught NO_RESOURCES exception. You must configure omniORB " << "with the location" << endl << "of the naming service." << endl; return 0; } catch(CORBA::ORB::InvalidName& ex) { // This should not happen! cerr << "Service required is invalid [does not exist]." << endl; return CORBA::Object::_nil(); } // Create a name object, containing the name test/context: CosNaming::Name name; name.length(2); name[0].id = (const char*) "test"; // string copied name[0].kind = (const char*) "my_context"; // string copied name[1].id = (const char*) "IdServer"; name[1].kind = (const char*) "Object"; // Note on kind: The kind field is used to indicate the type // of the object. This is to avoid conventions such as that used // by files (name.type -- e.g. test.ps = postscript etc.) try { // Resolve the name to an object reference. return rootContext->resolve(name); } catch(CosNaming::NamingContext::NotFound& ex) { // This exception is thrown if any of the components of the // path [contexts or the object] aren't found: cerr << "Context not found." << endl; } catch(CORBA::TRANSIENT& ex) { cerr << "Caught system exception TRANSIENT -- unable to contact the " << "naming service." << endl << "Make sure the naming server is running and that omniORB is " << "configured correctly." << endl; } catch(CORBA::SystemException& ex) { cerr << "Caught a CORBA::" << ex._name() << " while using the naming service." << endl; return 0; } return CORBA::Object::_nil(); }
int main(int argc, char *argv[]) { CORBA::ORB_var orb = CORBA::ORB::_nil(); try { orb = CORBA::ORB_init(argc, argv); CORBA::Object_var obj; obj = orb->resolve_initial_references("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); if(CORBA::is_nil(poa)){ throw std::string("error: failed to narrow root POA."); } PortableServer::POAManager_var poaManager = poa->the_POAManager(); if(CORBA::is_nil(poaManager)){ throw std::string("error: failed to narrow root POA manager."); } OnlineViewer_impl* OnlineViewerImpl = new OnlineViewer_impl(orb, poa); poa->activate_object(OnlineViewerImpl); OnlineViewer_var OnlineViewer = OnlineViewerImpl->_this(); OnlineViewerImpl->_remove_ref(); obj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var namingContext = CosNaming::NamingContext::_narrow(obj); if(CORBA::is_nil(namingContext)){ throw std::string("error: failed to narrow naming context."); } CosNaming::Name name; name.length(1); name[0].id = CORBA::string_dup("OnlineViewer"); name[0].kind = CORBA::string_dup(""); namingContext->rebind(name, OnlineViewer); poaManager->activate(); glmain(argc, argv); } catch (CORBA::SystemException& ex) { std::cerr << ex._rep_id() << std::endl; } catch (const std::string& error){ std::cerr << error << std::endl; } try { orb->destroy(); } catch(...){ } return 0; }
void TAO_Hash_Naming_Context::rebind_context (const CosNaming::Name &n, CosNaming::NamingContext_ptr nc) { // 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 rebinding should take place, then perform the rebinding // 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->rebind_context (simple_name, nc); } catch (const CORBA::SystemException&) { throw CosNaming::NamingContext::CannotProceed( context.in (), simple_name); } } else // If we received a simple name, we need to rebind it in this // context. { ACE_WRITE_GUARD_THROW_EX (TAO_SYNCH_RW_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); int result = this->context_->rebind (n[0].id, n[0].kind, nc, CosNaming::ncontext); // Check for error conditions. if (result == -1) throw CORBA::INTERNAL (); else if (result == -2) throw CosNaming::NamingContext::NotFound( CosNaming::NamingContext::not_context, n); } }
int ACE_TMAIN (int argc, ACE_TCHAR *argv []) { try { // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); if (parse_args (argc, argv) != 0) return 1; // Find the Naming Service. CORBA::Object_var rootObj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootNC = CosNaming::NamingContext::_narrow(rootObj.in()); // Get the Root POA. CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow(obj.in()); // Activate POA manager PortableServer::POAManager_var mgr = poa->the_POAManager(); mgr->activate(); // Create our Messenger servant. PortableServer::Servant_var<Messenger_i> messenger_servant = new Messenger_i(orb.in()); // Register it with the RootPOA. PortableServer::ObjectId_var oid = poa->activate_object( messenger_servant.in() ); CORBA::Object_var messenger_obj = poa->id_to_reference( oid.in() ); // Bind it in the Naming Service. CosNaming::Name name; name.length (1); name[0].id = CORBA::string_dup("MessengerService"); rootNC->rebind(name, messenger_obj.in()); CORBA::String_var str = orb->object_to_string (messenger_obj.in()); std::ofstream iorFile (ACE_TEXT_ALWAYS_CHAR(ior_output_file)); iorFile << str.in () << std::endl; iorFile.close (); std::cout << "IOR written to file " << ior_output_file << std::endl; // Accept requests orb->run(); orb->destroy(); } catch(const CORBA::Exception& ex) { std::cerr << ex << std::endl; return 1; } return 0; }
int main( int argc, char *argv[] ) { try { // Initialize the CORBA Object Request Broker CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); // Find the CORBA Services Naming Service CORBA::Object_var naming_obj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var root = CosNaming::NamingContext::_narrow(naming_obj.in()); if(CORBA::is_nil(root.in())) { cerr << "Could not narrow NameService to NamingContext!" << endl; throw 0; } // Resolve the desired object (ExampleInterfaces.IAdder). // The module and interface bindings need to be the same here in the client as they // are in the server. CosNaming::Name name; name.length(2); name[0].id = CORBA::string_dup( "ExampleInterfaces" ); // IDL-defined Module (namespace) name[1].id = CORBA::string_dup( "IAdder" ); // IDL-defined Interface (interface class) CORBA::Object_var obj = root->resolve(name); // Narrow to confirm that we have the interface we want. ExampleInterfaces::IAdder_var iAdder = ExampleInterfaces::IAdder::_narrow(obj.in()); if (CORBA::is_nil(iAdder.in())) { cerr << "Could not narrow to an iAdder reference" << endl; return 1; } // Now use the remote object... cout << "Using a remote object that implements the IAdder interface..." << endl; cout << endl; double number1 = 0; double number2 = 0; double sum = 0; while (true) { cout << "Enter the first number: "; cin >> number1; cout << "Enter the second number: "; cin >> number2; sum = iAdder->add(number1, number2); cout << "The sum is: " << sum << endl; cout << "------------------" << endl; } } catch ( CORBA::Exception& ex ) { cerr << "Caught a CORBA::Exception: " << ex << endl; return 1; } return 0; }
int ACE_TMAIN(int argc, ACE_TCHAR * argv[]) { try { // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); CORBA::Object_var rootObj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var rootContext = CosNaming::NamingContext::_narrow(rootObj.in()); CosNaming::Name name; name.length (1); name[0].id = CORBA::string_dup ("MessengerService"); CORBA::Object_var messengerObj = rootContext->resolve(name); if (CORBA::is_nil(messengerObj.in())) { std::cerr << "Nil Messenger reference" << std::endl; return 1; } // Narrow Messenger_var messenger = Messenger::_narrow(messengerObj.in()); if (CORBA::is_nil(messenger.in ())) { std::cerr << "Argument is not a Messenger reference" << std::endl; return 1; } CORBA::String_var message = CORBA::string_dup( "We are experiencing network problems."); messenger->send_message ("*****@*****.**", "urgent", message.inout()); message = CORBA::string_dup("Where can I get TAO?"); messenger->send_message ("*****@*****.**", "OCI's Distribution of TAO", message.inout()); message = CORBA::string_dup( "Please contact [email protected] regarding your request."); messenger->send_message ("*****@*****.**", "OCI's Distribution of TAO", message.inout()); } catch(const CORBA::Exception& ex) { std::cerr << "Caught a CORBA exception: " << ex << std::endl; return 1; } std::cout << "MessengerClient: success" << std::endl; return 0; }
static void checkLogging(ACSDaemonContext * context, short instance) { if (!loggingSystemInitialized) { // we need msg_callback to get LoggingProxy if (ACE_LOG_MSG->msg_callback () != 0 && context->hasConfigurationReference(instance, acsServices[NAMING_SERVICE].xmltag)) { try { // we get via NS and not a manager (to support logging when manager is not running) std::string nsReference = context->getConfigurationReference(instance, acsServices[NAMING_SERVICE].xmltag); CORBA::Object_var nc_obj = context->getORB()->string_to_object(nsReference.c_str()); if (nc_obj.ptr() != CORBA::Object::_nil()) { CosNaming::NamingContext_var nc = CosNaming::NamingContext::_narrow(nc_obj.in()); if (nc.ptr() != CosNaming::NamingContext::_nil()) { CosNaming::Name name; name.length(1); name[0].id = CORBA::string_dup("Log"); CORBA::Object_var obj = nc->resolve(name); if (!CORBA::is_nil(obj.in())) { Logging::AcsLogService_var logger = Logging::AcsLogService::_narrow(obj.in()); LoggingProxy* lp = static_cast<LoggingProxy*>(ACE_LOG_MSG->msg_callback()); lp->setCentralizedLogger(logger.in()); lp->setNamingContext(nc.in()); loggingSystemInitialized = true; ACS_SHORT_LOG((LM_DEBUG, "Remote logging system initialized.")); } else { ACS_SHORT_LOG((LM_DEBUG, "Unable to resolve Log from the naming service.")); } } else { ACS_SHORT_LOG((LM_DEBUG, "Unable to narrow NamingContext.")); } } else { ACS_SHORT_LOG((LM_ERROR, "Unable to resolve naming service, invalid corbaloc reference: '%s'.", nsReference.c_str())); } } catch (...) { ACS_SHORT_LOG((LM_DEBUG, "Unable to initialize logging sytem, unexpected exception caught.")); } } } }
int MT_Test::execute (TAO_Naming_Client &root_context) { if (CORBA::is_nil (this->orb_.in ())) return -1; // Create data which will be used by all threads. // Dummy object instantiation. My_Test_Object *test_obj_impl = new My_Test_Object (CosNaming_Client::OBJ1_ID); try { test_ref_ = test_obj_impl->_this (); test_obj_impl->_remove_ref (); // Get the IOR for the Naming Service. Each thread can use it // in <string_to_object> to create its own stub for the Naming // Service. This 'trick' is necessary, because multiple threads // cannot be using the same stub - bad things happen... This is // just a way to give each thread its own stub. CosNaming::NamingContext_var context = root_context.get_context (); name_service_ior_ = orb_->object_to_string (context.in ()); } catch (const CORBA::Exception& ex) { ex._tao_print_exception ( "Unexpected exception while instantiating dummy"); return -1; } // Create a name for dummy. test_name_.length (1); test_name_[0].id = CORBA::string_dup ("Foo"); // Spawn threads, each of which will be executing svc (). int status = this->activate (THR_NEW_LWP | THR_JOINABLE, size_); if (status == -1) return -1; status = this->wait (); return status; }
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); }
CORBA::Object_ptr VOmniORBHelper::nsGetObject(const char* program, const char* object, int telescopenumber) throw(CORBA::SystemException, CosNaming::NamingContext::NotFound, CosNaming::NamingContext::CannotProceed, CosNaming::NamingContext::InvalidName) { CosNaming::NamingContext_var root = nsRootContext(); CosNaming::Name_var name = nsPathToObjectName(program,object,telescopenumber); CORBA::Object_ptr obj = root->resolve(name); return obj; }
CORBA::Object_ptr getObjectReference(CORBA::ORB_ptr orb, const char serviceName[]) { CosNaming::NamingContext_var rootContext; try { // Obtain a reference to the root context of the name service: CORBA::Object_var initServ; initServ = orb->resolve_initial_references("NameService"); // Narrow the object returned by resolve_initial_references() to a CosNaming::NamingContext // object rootContext = CosNaming::NamingContext::_narrow(initServ); if (CORBA::is_nil(rootContext)) { cerr << "Failed to narrow naming context." << endl; return CORBA::Object::_nil(); } } catch (CORBA::ORB::InvalidName&) { cerr << "Name service does not exist." << endl; return CORBA::Object::_nil(); } // Create a name object, containing the name corejava/SysProp: CosNaming::Name name; name.length(1); name[0].id = serviceName; name[0].kind = "Object"; CORBA::Object_ptr obj; try { // Resolve the name to an object reference, and assign the returned reference to a // CORBA::Object: obj = rootContext->resolve(name); } catch (CosNaming::NamingContext::NotFound&) { // This exception is thrown if any of the components of the path [contexts or the object] // aren't found: cerr << "Context not found." << endl; return CORBA::Object::_nil(); } return obj; }
OnlineViewer_var getOnlineViewer(CosNaming::NamingContext_var cxt) { CosNaming::Name ncName; ncName.length(1); ncName[0].id = CORBA::string_dup("OnlineViewer"); ncName[0].kind = CORBA::string_dup(""); OnlineViewer_var onlineViewer = NULL; try { onlineViewer = OnlineViewer::_narrow(cxt->resolve(ncName)); } catch(const CosNaming::NamingContext::NotFound &exc) { std::cerr << "OnlineViewer not found: "; switch(exc.why) { case CosNaming::NamingContext::missing_node: std::cerr << "Missing Node" << std::endl; case CosNaming::NamingContext::not_context: std::cerr << "Not Context" << std::endl; break; case CosNaming::NamingContext::not_object: std::cerr << "Not Object" << std::endl; break; } return 0; } catch(CosNaming::NamingContext::CannotProceed &exc) { std::cerr << "Resolve OnlineViewer CannotProceed" << std::endl; return 0; } catch(CosNaming::NamingContext::AlreadyBound &exc) { std::cerr << "Resolve OnlineViewer InvalidName" << std::endl; return 0; } return onlineViewer; }
X_ptr checkCorbaServer(std::string n, CosNaming::NamingContext_var &cxt) { CosNaming::Name ncName; ncName.length(1); ncName[0].id = CORBA::string_dup(n.c_str()); ncName[0].kind = CORBA::string_dup(""); X_ptr srv = NULL; try { srv = X::_narrow(cxt->resolve(ncName)); } catch(const CosNaming::NamingContext::NotFound &exc) { std::cerr << n << " not found: "; switch(exc.why) { case CosNaming::NamingContext::missing_node: std::cerr << "Missing Node" << std::endl; case CosNaming::NamingContext::not_context: std::cerr << "Not Context" << std::endl; break; case CosNaming::NamingContext::not_object: std::cerr << "Not Object" << std::endl; break; } return (X_ptr)NULL; } catch(CosNaming::NamingContext::CannotProceed &exc) { std::cerr << "Resolve " << n << " CannotProceed" << std::endl; } catch(CosNaming::NamingContext::AlreadyBound &exc) { std::cerr << "Resolve " << n << " InvalidName" << std::endl; } return srv; }
ModelLoader_var hrp::getModelLoader(CosNaming::NamingContext_var cxt) { CosNaming::Name ncName; ncName.length(1); ncName[0].id = CORBA::string_dup("ModelLoader"); ncName[0].kind = CORBA::string_dup(""); ModelLoader_var modelLoader = NULL; try { modelLoader = ModelLoader::_narrow(cxt->resolve(ncName)); modelLoader->_non_existent(); } catch(const CosNaming::NamingContext::NotFound &exc) { std::cerr << "ModelLoader not found: "; switch(exc.why) { case CosNaming::NamingContext::missing_node: std::cerr << "Missing Node" << std::endl; case CosNaming::NamingContext::not_context: std::cerr << "Not Context" << std::endl; break; case CosNaming::NamingContext::not_object: std::cerr << "Not Object" << std::endl; break; } modelLoader = ModelLoader::_nil(); } catch(CosNaming::NamingContext::CannotProceed &exc) { std::cerr << "Resolve ModelLoader CannotProceed" << std::endl; modelLoader = ModelLoader::_nil(); } catch(CosNaming::NamingContext::AlreadyBound &exc) { std::cerr << "Resolve ModelLoader InvalidName" << std::endl; modelLoader = ModelLoader::_nil(); } catch(...){ modelLoader = ModelLoader::_nil(); } return modelLoader; }
void ClientInitializer::post_init (PortableInterceptor::ORBInitInfo_ptr info) { // Find the Naming Service CORBA::Object_var naming_obj = info->resolve_initial_references("NameService"); CosNaming::NamingContext_var root = CosNaming::NamingContext::_narrow(naming_obj.in()); if( CORBA::is_nil(root.in())) { std::cerr << "Nil Naming Context reference" << std::endl; ACE_ASSERT(false); } // Resolve the Messenger object CosNaming::Name name; name.length( 1 ); name[0].id = CORBA::string_dup( "Messenger" ); CORBA::Object_var obj = CORBA::Object::_nil(); while ( CORBA::is_nil( obj.in() ) ) { try { obj = root->resolve( name ); } catch (const CosNaming::NamingContext::NotFound&) { // Sleep for a second and try again ACE_OS::sleep(1); } } Messenger_var messenger = Messenger::_narrow( obj.in() ); if( CORBA::is_nil( messenger.in() ) ) { std::cerr << "Not a Messenger reference" << std::endl; ACE_ASSERT(false); } // allocate slot slot_ = info->allocate_slot_id(); // get PICurrent CORBA::Object_var current_obj = info->resolve_initial_references("PICurrent"); current_ = PortableInterceptor::Current::_narrow(current_obj.in()); // Create and register the request interceptors. PortableInterceptor::ClientRequestInterceptor_var ci = new ClientInterceptor(messenger, current_.in(), slot_); info->add_client_request_interceptor (ci.in()); }
CosNaming::NamingContext_ptr TAO_Transient_Naming_Context::make_new_context (PortableServer::POA_ptr poa, const char *poa_id, size_t context_size) { // Put together a servant for the new Naming Context. TAO_Transient_Naming_Context *context_impl = 0; ACE_NEW_THROW_EX (context_impl, TAO_Transient_Naming_Context (poa, poa_id, context_size), CORBA::NO_MEMORY ()); // Put <context_impl> into the auto pointer temporarily, in case next // allocation fails. ACE_Auto_Basic_Ptr<TAO_Transient_Naming_Context> temp (context_impl); TAO_Naming_Context *context = 0; ACE_NEW_THROW_EX (context, TAO_Naming_Context (context_impl), CORBA::NO_MEMORY ()); // Let <implementation> know about it's <interface>. context_impl->interface (context); // Release auto pointer, and start using reference counting to // control our servant. temp.release (); PortableServer::ServantBase_var s = context; // Register the new context with the POA. #if defined (CORBA_E_MICRO) PortableServer::ObjectId_var id = poa->activate_object (context); #else PortableServer::ObjectId_var id = PortableServer::string_to_ObjectId (poa_id); poa->activate_object_with_id (id.in (), context); #endif /* CORBA_E_MICRO */ CosNaming::NamingContext_var result = context->_this (); return result._retn (); }
int ORB_Task::svc (void) { try { CORBA::Object_var ncRef = orb_->string_to_object( "corbaloc:iiop:10.175.12.99:15025/NameService" ); CORBA::PolicyList policies; TimeBase::TimeT timeout = 5000 * 10000; CORBA::Any timeoutAny; timeoutAny <<= timeout; policies.length(1); policies[0] = orb_->create_policy( Messaging::RELATIVE_RT_TIMEOUT_POLICY_TYPE, timeoutAny ); CORBA::Object_var object = ncRef->_set_policy_overrides( policies, CORBA::SET_OVERRIDE ); policies[0]->destroy(); CosNaming::NamingContext_var namingContext = CosNaming::NamingContext::_narrow( object.in() ); namingContext->_non_existent(); } catch ( const CORBA::TRANSIENT&) { ACE_DEBUG ((LM_DEBUG, "Caught transient\n")); } catch ( const CORBA::TIMEOUT&) { ACE_DEBUG ((LM_DEBUG, "Caught timeout\n")); } catch ( const CORBA::Exception& e ) { e._tao_print_exception ("Exception caught"); } return 0; }
CosNaming::NamingContext_ptr TAO_Hash_Naming_Context::get_context (const CosNaming::Name &name) { CosNaming::NamingContext_var result = CosNaming::NamingContext::_nil (); // Create compound name to be resolved, i.e., // (<name> - last component). To avoid copying, we can just reuse // <name>'s buffer, since we will not be modifying it. CORBA::ULong name_len = name.length (); CosNaming::Name comp_name (name.maximum (), name_len - 1, const_cast<CosNaming::NameComponent*> (name.get_buffer ())); try { CORBA::Object_var context = this->resolve (comp_name); // Try narrowing object reference to the NamingContext type. result = CosNaming::NamingContext::_narrow (context.in ()); } catch (CosNaming::NamingContext::NotFound& ex) { // Add the last component of the name, which was stripped before // the call to resolve. CORBA::ULong const rest_len = ex.rest_of_name.length () + 1; ex.rest_of_name.length (rest_len); ex.rest_of_name[rest_len - 1] = name[name_len - 1]; throw; } if (CORBA::is_nil (result.in ())) { CosNaming::Name rest; rest.length (2); rest[0] = name[name_len - 2]; rest[1] = name[name_len - 1]; throw CosNaming::NamingContext::NotFound( CosNaming::NamingContext::not_context, rest); } // Finally, if everything went smoothly, just return the resolved // context. return result._retn (); }
CosNaming::NamingContext_ptr TAO_Transient_Naming_Context::new_context (void) { // Generate a POA id for the new context. char poa_id[BUFSIZ]; ACE_OS::sprintf (poa_id, "%s_%d", this->poa_id_.c_str (), this->counter_++); // Create a new context. CosNaming::NamingContext_var result = make_new_context (this->poa_.in (), poa_id, this->transient_context_->total_size ()); return result._retn (); }