00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <OB/CORBA.h>
00024 #include <OB/CosNaming.h>
00025 #include "NameClient_impl.h"
00026
00033 int main(int argc, char* argv[])
00034 {
00035 CORBA::ORB_var orb;
00036
00037 try {
00038 CosNaming::Name name;
00039 CosNaming::NamingContext_var inc;
00040 CosNaming::NamingContext_var myinc;
00041 PortableServer::POA_var poa;
00042 PortableServer::POAManager_var mgr;
00043 orb = CORBA::ORB_init(argc, argv);
00044 try {
00045 CORBA::Object_var nms = orb->resolve_initial_references ("NameService");
00046 inc = CosNaming::NamingContext::_narrow (nms);
00047 assert (!CORBA::is_nil (inc));
00048 name.length (1);
00049 printf ("Binding %s to 'SimpleNameServer' naming context\n", argv [0]);
00050 name [0].id = CORBA::string_dup ("SimpleNameServer");
00051 name [0].kind = CORBA::string_dup ("");
00052 try {
00053 myinc = inc->bind_new_context (name);
00054 }
00055 catch (const CosNaming::NamingContext::AlreadyBound &) {
00056
00057 CORBA::Object_var ncb = inc->resolve (name);
00058 myinc = CosNaming::NamingContext::_narrow (ncb);
00059 }
00060 catch (...) {
00061 cout << "Fatal error: some exception while calling NameService!" << endl;
00062 }
00063 }
00064 catch (...) {
00065 cout << "Fatal error: could not contact NameService!" << endl;
00066 return -1;
00067 }
00068 try {
00069 CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA");
00070 poa = PortableServer::POA::_narrow (obj);
00071 mgr = poa->the_POAManager ();
00072 mgr->activate ();
00073 }
00074 catch (...) {
00075 cout << "Fatal error: could not activate POAManager!" << endl;
00076 return -1;
00077 }
00078 try {
00079 SimpleNameServer::SimpleNamingClient_impl *pSimNamClient =
00080 new SimpleNameServer::SimpleNamingClient_impl (inc);
00081 {
00082 SimpleNameServer::SimpleNamingClient_var client = pSimNamClient->_this ();
00083
00084
00085 CosNaming::Name name;
00086 name.length (1);
00087 name [0].id = CORBA::string_dup ("SimpleNamingClient");
00088 name [0].kind = CORBA::string_dup ("");
00089 myinc->rebind (name, client);
00090 }
00091 orb->run ();
00092
00093 }
00094 catch (...) {
00095 cout << "Fatal error: could not create client!" << endl;
00096 return -1;
00097 }
00098 }
00099 catch(CORBA::SystemException&) {
00100 cerr << "Caught CORBA::SystemException." << endl;
00101 }
00102 catch(CORBA::Exception&) {
00103 cerr << "Caught CORBA::Exception." << endl;
00104 }
00105 catch(...) {
00106 cerr << "Caught unknown exception." << endl;
00107 }
00108 try {
00109 orb->shutdown (true);
00110 orb->destroy ();
00111 }
00112 catch(...) {
00113 cerr << "Caught unknown exception." << endl;
00114 }
00115 return 0;
00116 }
00117
00118