#include #include "Echo.H" // This client reads the IOR from the naming service static void hello( Echo_ptr echo ) { CORBA::String_var src = (const char*) "Hello there!"; CORBA::String_var dest = echo->echoString( src ); cout << "I said [" << (char*)src << "]." << endl; cout << "The echo replied [" << (char*)dest << "]." << endl; } int main( int argc, char** argv ) { try { CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); // Obtain a reference to the Naming Service CORBA::Object_var obj = orb->resolve_initial_references("NameService"); if( CORBA::is_nil( obj ) ) { cerr << "Cannot get hold of name service" << endl; return 1; } CosNaming::NamingContextExt_var nsRoot = CosNaming::NamingContextExt::_narrow(obj); if( CORBA::is_nil( nsRoot ) ) { cerr << "Cannot narrow root naming context" << endl; return 1; } // Get IOR from name obj = nsRoot->resolve_str( "TheEcho" ); if( CORBA::is_nil( obj ) ) { cerr << "Got no IOR from naming service" << endl; return 1; } // Narrow object reference to Echo Echo_var echoref = Echo::_narrow( obj ); if( CORBA::is_nil( echoref ) ) { cerr << "Cannot narrow object reference to type Echo" << endl; return 1; } for( int count=0; count<5; count++ ) { hello( echoref ); } orb->destroy(); } catch( CORBA::COMM_FAILURE& ex ) { cerr << "Exception COMM_FAILURE" << endl; } catch(CORBA::SystemException& ex) { cerr << "Caught CORBA::SystemException: [" << ex.NP_minorString() << "]" << endl; } catch( CORBA::Exception& ex ) { cerr << "CORBA Exception: [" << ex._name() << "]" << endl; } catch( ... ) { cerr << "Unexpected exception" << endl; } return 0; }