server.cc
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. #include <iostream>
  2. #include "pgsql_int.h"
  3. bool terminate = false;
  4. int main(int argc, char *argv)
  5. {
  6. CORBA::ORB_var orb = CORBA::ORB_init(argc,argv,"");
  7. PortableManager::POA_var poa = PortableServer::POA::_narrow(orb->resolve_initial_references("RootPOA"));
  8. PortableManager::POAManager_var mgr = poa->the_POAManager();
  9. Server_impl *server = new Server_impl;
  10. poa->activate_object(server);
  11. CosNaming::NamingContext_var ctx = CosNaming::NamingContext::_narrow(orb->resolve_initial_references("NamingService"));
  12. CosNaming::Name_var n = new CosNaming::Name(1);
  13. n[0].id("PostgreSQL");
  14. n[0].name("service");
  15. bool bindok = false;
  16. if (!CORBA::Object::is_nil(ctx)) {
  17. try {
  18. CosNaming::NamingContext_var myctx = ctx->bind_new_context(n);
  19. CosNaming::Name_var n2 = new CosNaming::Name(1);
  20. n2[0].id("Server");
  21. n2[0].name("Server");
  22. myctx->bind(n2,server->_this());
  23. bindok = true;
  24. } catch (CORBA::Exception &e) {
  25. cerr << "Warning: Naming Service bind failed" << endl;
  26. bindok = false;
  27. }
  28. } else {
  29. cerr << "Warning: Naming Service not found" << endl;
  30. }
  31. mgr->activate();
  32. while (!terminate) {
  33. if (orb->work_pending())
  34. orb->perform_work();
  35. if (expiry_needed())
  36. expire_now();
  37. }
  38. if (!CORBA::Object::is_nil(ctx) && bindok) {
  39. try {
  40. CosNaming::NamingContext myctx = ctx->resolve(n);
  41. ctx->unbind(n);
  42. myctx->destroy();
  43. } catch (CORBA::Exception &e) {
  44. cerr << "Warning: Naming Service unbind failed" << endl;
  45. }
  46. }
  47. orb->shutdown(true);
  48. delete server;
  49. return 0;
  50. }