1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| try {
// Initialize ORB
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB4");
//
// Get naming service
//
CORBA::Object_var obj;
try {
obj = orb -> resolve_initial_references("NameService");
}
catch(const CORBA::ORB::InvalidName&) {
cerr << argv[0] << ": can't resolve `NameService'" << endl;
}
if(CORBA::is_nil(obj)) {
cerr << argv[0] << ": `NameService' is a nil object reference" << endl;
}
CosNaming::NamingContext_var nc = CosNaming::NamingContext::_narrow(obj);
CORBA::Object_var objCommunication;
try {
//
// Compose Name and get reference
//
CosNaming::Name ncName;
ncName.length(1);
ncName[0].id = CORBA::string_dup("relais");
ncName[0].kind = CORBA::string_dup("");
objCommunication = nc -> resolve(ncName);
} catch (const CORBA::Exception& ex) {
cerr << "Erreur rebind" << endl;
}
if(CORBA::is_nil(objCommunication)) {
cout<<"objCommunication is nil;
}
//Echo_ptr echoref = Echo::_narrow(objCommunication);
relais :: RelaisCorba_ptr echoref = relais::RelaisCorba::_narrow(objCommunication);
if( CORBA::is_nil(echoref) ) {
cerr << "Can't narrow reference to type Echo (or it was nil)." << endl;
return 1;
}
// invoc server
CORBA::String_var dest = echoref->creerCertificat(message);
cout << "I said, \"" << message << "\"." << endl
<< "The Relais object replied, \"" << (char*)dest <<"\"." << endl;
// shutdown orb
orb->destroy();
}
catch(CORBA::UserException& e) {
cerr << "Caught CORBA::UserException." << endl;
cout << e._name();
}
catch(CORBA::SystemException& e) {
cerr << "Caught CORBA::SystemException." << endl;
cout << e._name();
} |
Partager