運行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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章