KCorbaServer.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #include "KCorbaServer.h"
  2. #include "iostream.h"
  3. extern CORBA::Boolean BindObjectToName(CORBA::ORB_ptr orb, CORBA::Object_ptr objref, char * ObjName, char * ObjType);
  4. BOOL KCorbaDataServer::ServerInit(int argc = 0, char **argv = NULL)
  5. {
  6. try
  7. {
  8. m_OrbVar  = CORBA::ORB_init(argc, argv, "omniORB3");
  9. m_ObjVar = m_OrbVar->resolve_initial_references("RootPOA");
  10. m_PoaVar = PortableServer::POA::_narrow(m_ObjVar);
  11. }
  12. catch(CORBA::SystemException&) {
  13. cerr << "Caught CORBA::SystemException6." << endl;
  14. return FALSE;
  15. }
  16. catch(CORBA::Exception&) {
  17. cerr << "Caught CORBA::Exception." << endl;
  18. return FALSE;
  19. }
  20. catch(omniORB::fatalException& fe) {
  21. cerr << "Caught omniORB::fatalException:" << endl;
  22. cerr << "  file: " << fe.file() << endl;
  23. cerr << "  line: " << fe.line() << endl;
  24. cerr << "  mesg: " << fe.errmsg() << endl;
  25. return FALSE;
  26. }
  27. catch(...) {
  28. cerr << "Caught unknown exception." << endl;
  29. return FALSE;
  30. }
  31. return TRUE;
  32. }
  33. BOOL KCorbaDataServer::StartServer(char * ServerName ,char * ServerType)
  34. {
  35. try
  36. {
  37. strcpy(m_ServerName, ServerName);
  38. strcpy(m_ServerType, ServerType);
  39. PortableServer::ObjectId_var ObjId = m_PoaVar->activate_object(this);
  40. // Obtain a reference to the object, and register it in
  41. // the naming service.
  42. m_ObjVar = this->_this();
  43. if (!BindObjectToName(m_OrbVar,m_ObjVar,m_ServerName,m_ServerType))
  44. return FALSE;
  45. this->_remove_ref();
  46. m_Sior = (m_OrbVar->object_to_string(m_ObjVar));
  47. m_PoaManager = m_PoaVar->the_POAManager();
  48. m_PoaManager->activate();
  49. printf("KCorbaDataServer[%s.%s] Have Started!.........nsior is:%sn",m_ServerName,m_ServerType,(char*)m_Sior);
  50. m_OrbVar->run();
  51. m_OrbVar->destroy();
  52. }
  53. catch(CORBA::SystemException&)  
  54. {
  55. cerr << "Caught CORBA::SystemException6." << endl;
  56. }
  57. catch(CORBA::Exception&) {
  58. cerr << "Caught CORBA::Exception." << endl;
  59. }
  60. catch(omniORB::fatalException& fe) {
  61. cerr << "Caught omniORB::fatalException:" << endl;
  62. cerr << "  file: " << fe.file() << endl;
  63. cerr << "  line: " << fe.line() << endl;
  64. cerr << "  mesg: " << fe.errmsg() << endl;
  65. }
  66. catch(...) {
  67. cerr << "Caught unknown exception." << endl;
  68. }
  69. }
  70. BOOL KCorbaDataServer::ShutDownServer()
  71. {
  72. return TRUE;
  73. }