eg1.cc

来自「编译工具」· CC 代码 · 共 102 行

CC
102
字号
// eg1.cc - This example is identical to that found in://             <top>/src/examples/echo/eg1.cc//          except that implicit activation is used to activate//          the echo object.//// Usage: eg1//#include <echo.hh>#ifdef HAVE_STD#  include <iostream>   using namespace std;#else#  include <iostream.h>#endifclass Echo_i : public POA_Echo,	       public PortableServer::RefCountServantBase{public:  inline Echo_i() {}  virtual ~Echo_i() {}  virtual char* echoString(const char* mesg);};char* Echo_i::echoString(const char* mesg){  return CORBA::string_dup(mesg);}//////////////////////////////////////////////////////////////////////static void hello(Echo_ptr e){  if( CORBA::is_nil(e) ) {    cerr << "hello: The object reference is nil!\n" << endl;    return;  }  CORBA::String_var src = (const char*) "Hello!";  CORBA::String_var dest = e->echoString(src);  cerr << "I said, \"" << (char*)src << "\"." << endl       << "The Echo object replied, \"" << (char*)dest <<"\"." << endl;}//////////////////////////////////////////////////////////////////////int main(int argc, char** argv){  try {    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);    {      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");      PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);      // NB. You can activate the POA before or after      // activating objects in that POA.      PortableServer::POAManager_var pman = poa->the_POAManager();      pman->activate();      Echo_i* myecho = new Echo_i();      // This activates the object in the root POA (by default), and      // returns a reference to it.      Echo_var myechoref = myecho->_this();      myecho->_remove_ref();      hello(myechoref);    }    orb->destroy();  }  catch(CORBA::COMM_FAILURE& ex) {    cerr << "Caught system exception COMM_FAILURE -- unable to contact the "         << "object." << endl;  }  catch(CORBA::SystemException&) {    cerr << "Caught CORBA::SystemException." << endl;  }  catch(CORBA::Exception&) {    cerr << "Caught CORBA::Exception." << endl;  }  catch(omniORB::fatalException& fe) {    cerr << "Caught omniORB::fatalException:" << endl;    cerr << "  file: " << fe.file() << endl;    cerr << "  line: " << fe.line() << endl;    cerr << "  mesg: " << fe.errmsg() << endl;  }  catch(...) {    cerr << "Caught unknown exception." << endl;  }  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?