#include "CipresCommlib/CipresRegistry.h" #include using namespace std; int CipresRegistry::nsRegister(const char *objectName, CORBA::Object *objectRef) { try { cout << "resolve ref for NameService" << endl; CORBA::Object_var naming_context_object = m_orb->resolve_initial_references ("NameService"); cout << "check for nil" << endl; if (CORBA::is_nil(naming_context_object.in())) { cerr << "Unable to resolve initial ref: NameService" << endl; throw 1; } cout << "narrow ref" << endl; CosNaming::NamingContext_var naming_context = CosNaming::NamingContext::_narrow (naming_context_object.in ()); if (CORBA::is_nil(naming_context.in())) { cerr << "Unable to narrow ref to NamingContext" << endl; throw 1; } // Create and initialize the name. CosNaming::Name name (1); name.length (1); name[0].id = CORBA::string_dup (objectName); // Bind the object naming_context->rebind (name, objectRef); } catch (...) { cout << "Unable to use naming service" << endl; return 0; } return 1; } CORBA::Object *CipresRegistry::nsFind(const char *objectName) { try { CORBA::Object_var obj; CORBA::Object_var nameServiceObj = m_orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var namingContext = CosNaming::NamingContext::_narrow(nameServiceObj.in()); CosNaming::Name name(1); name.length(1); name[0].id = CORBA::string_dup(objectName); obj = namingContext->resolve(name); return obj._retn(); } catch (CORBA::Exception &) { cout << "Unable to get " << objectName << " from NameService" << endl; return CORBA::Object::_nil(); } }