diff options
Diffstat (limited to 'TAO/tests/CollocationLockup/SimpleNamingService.cpp')
-rw-r--r-- | TAO/tests/CollocationLockup/SimpleNamingService.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/TAO/tests/CollocationLockup/SimpleNamingService.cpp b/TAO/tests/CollocationLockup/SimpleNamingService.cpp new file mode 100644 index 00000000000..c21e466fec7 --- /dev/null +++ b/TAO/tests/CollocationLockup/SimpleNamingService.cpp @@ -0,0 +1,74 @@ +// $Id$ + +/** + * SimpleNamingService.cpp + * This is part of the regression test against bug #2130. + * See CollocationLockup.cpp for a description of the test. + */ + +#include "SimpleNamingServiceS.h" + +#include "ace/String_Base.h" +#include "ace/streams.h" + +namespace +{ + const char* iorFileName = "SimpleNamingService.ior"; +} + +class SimpleNamingService_i : public virtual POA_SimpleNamingService +{ +public: + + virtual void + bind (CORBA::Object_ptr obj) ACE_THROW_SPEC ((CORBA::SystemException)) + { + obj_ = CORBA::Object::_duplicate (obj); + } + + + virtual CORBA::Object_ptr + resolve () ACE_THROW_SPEC ((CORBA::SystemException)) + { + return CORBA::Object::_duplicate (obj_.in ()); + } + +private: + + CORBA::Object_var obj_; + +}; + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, ""); + + CORBA::Object_var pPoaObj = + orb->resolve_initial_references ("RootPOA"); + PortableServer::POA_var poa = + PortableServer::POA::_narrow (pPoaObj.in ()); + PortableServer::POAManager_var pMgr = poa->the_POAManager (); + pMgr->activate (); + + SimpleNamingService_i* servant = new SimpleNamingService_i; + PortableServer::ObjectId_var oid = poa->activate_object (servant); + CORBA::Object_var obj = poa->id_to_reference (oid.in ()); + CORBA::String_var str = orb->object_to_string (obj.in ()); + + ofstream iorFile (iorFileName); + iorFile << str.in () << endl; + iorFile.close (); + + orb->run (); + } + catch (CORBA::Exception& ex) + { + ACE_DEBUG ((LM_ERROR, "Corba Exception: %s\n", ex._info ().c_str ())); + return 1; + } + + return 0; +} |