class broker {public: broker(); void init(int& argc, char**& argv, int fl=0);
broker.h 1 = client
int operator()();to run the server
char* ref(corba::object* x);object_to_string
corba::object* ref(const char* s);string_to object
corba::object* object(const char* file);get object IOR file
void refout(const char* f, corba::object* x);IOR to file
};
broker::broker() { }void broker::init(int& argc, char**& argv, int fl=0) { _orb = CORBA_ORB_init(argc, argv); if (!fl) _boa = _orb -> BOA_init(argc, argv); } } int broker::operator()() { _boa -> impl_is_ready(CORBA_ImplementationDef::_nil()); }
broker.c
Client
int main(int argc, char* argv[], char*[]) {broker* _broker = new broker();
client.c get yourself a broker
try { _broker->init(argc,argv);initialize broker
corba::object* obj = _broker->object("world.ref"); universe_world_var world = universe_world::_narrow(obj); {some object invocations
world -> hello(); world -> ask("How are Clinton's affairs?"); cout << "client:" << world->tell() << endl; } } catch(corba::exception ex) { ... } }
int main(int argc, char* argv[], char*[]){ broker* _broker = new broker();
server.c get yourself a broker
try { _broker->init(argc,argv);initialize orb and boa
universe_world_var p = new universe_world_srv; _broker->refout("world.ref", p);write identity
_broker->operator()();run the the world
} catch(corba::exception& ex) { ... } }
void universe_world_srv::hello() {cout << "Hello World!" << endl; } void universe_world_srv::ask(const char* s) { cout << "Asking: " << s << endl; } char* universe_world_srv::tell() { char result[] = "ok"; CORBA_String_var s = (const char*) result; return s._retn(); } void universe_world_srv::halt() { exit(0); }
world_srv.c