diff options
Diffstat (limited to 'Bachelor/Verteilte Systeme/Praktikum3/cabsearch_ns.cpp')
| -rw-r--r-- | Bachelor/Verteilte Systeme/Praktikum3/cabsearch_ns.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Bachelor/Verteilte Systeme/Praktikum3/cabsearch_ns.cpp b/Bachelor/Verteilte Systeme/Praktikum3/cabsearch_ns.cpp new file mode 100644 index 0000000..f1f1fa3 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum3/cabsearch_ns.cpp @@ -0,0 +1,59 @@ +#include <CORBA.h> +#include <coss/CosNaming.h> +#include "IPBook.h" + +#include <iostream> +using namespace std; + +int main( int argc, char **argv) +{ + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv); + + int rc = 0; + if (argc != 2) { + cerr << "usage: " << argv[0] << " name\n"; + exit(1); + } + + try { + CORBA::Object_var nsobj = + orb->resolve_initial_references ("NameService"); + if (CORBA::is_nil( nsobj)) { + cerr << "can't resolve NameService\n"; + exit(1); + } + CosNaming::NamingContext_var nc = + CosNaming::NamingContext::_narrow (nsobj); + + CosNaming::Name name; + name.length (1); + name[0].id = CORBA::string_dup ("AddressBook"); + name[0].kind = CORBA::string_dup (""); + + CORBA::Object_var obj = nc->resolve( name); + + IPBook_var f = IPBook::_narrow( obj); + + cout << f->searchEntry( argv[1]) << endl; + } + catch(CORBA::ORB::InvalidName_catch& ex) + { + ex->_print(cerr); + cerr << endl; + cerr << "possible cause: can't locate Naming Service\n"; + rc = 1; + } + catch(CosNaming::NamingContext::NotFound_catch& ex) + { + cerr << "Name not found at Naming Service\n"; + rc = 1; + } + catch(CORBA::SystemException_catch& ex) + { + ex->_print(cerr); + cerr << endl; + rc = 1; + } + + return rc; +} |
