int main(int argc, char ** argv) { try { // init ORB CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv); // init POA CORBA::Object_var poa_obj = orb->resolve_initial_references("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow(poa_obj); PortableServer::POAManager_var manager = poa->the_POAManager(); // create service Math_operation * service = new Math_operation; // register within the naming service try { CORBA::Object_var ns_obj = orb->resolve_initial_references("NameService"); if (!CORBA::is_nil(ns_obj)) { CosNaming::NamingContext_ptr nc = CosNaming::NamingContext::_narrow(ns_obj); CosNaming::Name name; name.length(1); name[0].id = CORBA::string_dup("TestServer"); name[0].kind = CORBA::string_dup(""); nc->rebind(name, service->_this()); cout << argv[0] << ": server 'TestServer' bound" << endl; } } catch (CosNaming::NamingContext::NotFound &) { cerr << "not found" << endl; } catch (CosNaming::NamingContext::InvalidName &) { cerr << "invalid name" << endl; } catch (CosNaming::NamingContext::CannotProceed &) { cerr << "cannot proceed" << endl; } // run manager->activate(); orb->run(); // clean up delete service; // quit orb->destroy(); } catch (CORBA::UNKNOWN) { cerr << "unknown exception" << endl; } catch (CORBA::SystemException &) { cerr << "system exception" << endl; } }
void FT_EventService::setup_scheduler(CosNaming::NamingContext_ptr naming_context) { RtecScheduler::Scheduler_var scheduler; if (CORBA::is_nil(naming_context)) { ACE_NEW_THROW_EX (this->sched_impl_, ACE_Config_Scheduler, CORBA::NO_MEMORY()); scheduler = this->sched_impl_->_this (); if (ACE_Scheduler_Factory::server(scheduler.in()) == -1) ORBSVCS_ERROR((LM_ERROR,"Unable to install scheduler\n")); } else { // This is the name we (potentially) register the Scheduling // Service in the Naming Service. CosNaming::Name schedule_name (1); schedule_name.length (1); schedule_name[0].id = CORBA::string_dup ("ScheduleService"); if (1) { // We must find the scheduler object reference... if (this->global_scheduler_ == 0) { ACE_NEW_THROW_EX (this->sched_impl_, ACE_Config_Scheduler, CORBA::NO_MEMORY()); scheduler = this->sched_impl_->_this (); // Register the servant with the Naming Context.... naming_context->rebind (schedule_name, scheduler.in ()); } else { CORBA::Object_var tmp = naming_context->resolve (schedule_name); scheduler = RtecScheduler::Scheduler::_narrow (tmp.in ()); } } } }
bool bind_object (const char *name, CORBA::Object_ptr obj, CosNaming::NamingContext_ptr ctx) { CIAO_TRACE ("Name_Utilities::bind_object"); if (CORBA::is_nil (ctx)) { CIAO_ERROR (1, (LM_WARNING, CLINFO "Name_Utilities::bind_object - " "Provided naming context is nil, component <%C> will not be registered.", name)); return false; } try { CosNaming::Name nm; Name_Utilities::build_name (name, nm); if (nm.length () == 0) { CIAO_ERROR (1, (LM_WARNING, CLINFO "Name_Utilities::bind_object - " "build_name resulted in an invalid name for string <%C>\n", name)); return false; } Name_Utilities::bind_context (nm, ctx); try { ctx->bind (nm, obj); } catch (const CosNaming::NamingContext::AlreadyBound &) { CIAO_ERROR (1, (LM_WARNING, CLINFO "Name_Utilities::bind_object - " "Name <%C> already bound, rebinding....\n", name)); ctx->rebind (nm, obj); } } catch (const CORBA::Exception &ex) { CIAO_ERROR (1, (LM_ERROR, CLINFO "Name_Utilities::bind_object - " "Caught CORBA exception while attempting to bind name <%C>: <%C>\n", name, ex._info ().c_str ())); return false; } catch (...) { CIAO_ERROR (1, (LM_ERROR, CLINFO "Name_Utilities::bind_object - " "Caught unknown C++ exception while attemptint to bind name <%C>\n", name)); return false; } return true; }