运行corba事件循环的线程比较靠谱的方式示例

int
My_Service::svc()
{
  {
    bool done = false;

    while (!done) {
      try {
        if (orb_->orb_core()->has_shutdown() == false) {
          orb_->run();
        }

        done = true;

      } catch (const CORBA::SystemException& sysex) {
        sysex._tao_print_exception(
          "ERROR: My_Service::svc");

      } catch (const CORBA::UserException& userex) {
        userex._tao_print_exception(
          "ERROR:My_Service::svc");

      } catch (const CORBA::Exception& ex) {
        ex._tao_print_exception(
          "ERROR:My_Service::svc");
      }

      if (orb_->orb_core()->has_shutdown()) {
        done = true;

      } else {
        orb_->orb_core()->reactor()->reset_reactor_event_loop();
      }
    }
  }

  return 0;
}

你可能感兴趣的:(exception,service)