OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner Struct Reference

Inheritance diagram for OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 OrbRunner ()
int svc ()
void shutdown ()

Public Attributes

CORBA::ORB_var orb_
ACE_Atomic_Op
< ACE_Thread_Mutex, unsigned
long > 
use_count_

Private Member Functions

 OrbRunner (const OrbRunner &)
OrbRunneroperator= (const OrbRunner &)

Detailed Description

Definition at line 248 of file InfoRepoDiscovery.h.


Constructor & Destructor Documentation

OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner::OrbRunner (  )  [inline]

Definition at line 249 of file InfoRepoDiscovery.h.

00249 {}

OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner::OrbRunner ( const OrbRunner  )  [private]

Member Function Documentation

OrbRunner& OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner::operator= ( const OrbRunner  )  [private]

Reimplemented from ACE_Task_Base.

void OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner::shutdown ( void   ) 

Definition at line 990 of file InfoRepoDiscovery.cpp.

References orb_, and ACE_Task_Base::wait().

Referenced by OpenDDS::DCPS::InfoRepoDiscovery::~InfoRepoDiscovery().

00991 {
00992   orb_->shutdown();
00993   wait();
00994   orb_->destroy();
00995 }

Here is the call graph for this function:

Here is the caller graph for this function:

int OpenDDS::DCPS::InfoRepoDiscovery::OrbRunner::svc ( void   )  [virtual]

Reimplemented from ACE_Task_Base.

Definition at line 1001 of file InfoRepoDiscovery.cpp.

References CORBA::Exception::_tao_print_exception(), orb_, SIG_SETMASK, ACE_OS::sigfillset(), sigset_t, and ACE_OS::thr_sigsetmask().

01002 {
01003   // this method was originally Service_Participant::svc()
01004   bool done = false;
01005 
01006   // Ignore all signals to avoid
01007   //     ERROR: <something descriptive> Interrupted system call
01008   // The main thread will handle signals.
01009   sigset_t set;
01010   ACE_OS::sigfillset(&set);
01011   ACE_OS::thr_sigsetmask(SIG_SETMASK, &set, NULL);
01012 
01013   while (!done) {
01014     try {
01015       if (orb_->orb_core()->has_shutdown() == false) {
01016         orb_->run();
01017       }
01018 
01019       done = true;
01020 
01021     } catch (const CORBA::SystemException& sysex) {
01022       sysex._tao_print_exception(
01023         "ERROR: InfoRepoDiscovery::OrbRunner");
01024 
01025     } catch (const CORBA::UserException& userex) {
01026       userex._tao_print_exception(
01027         "ERROR: InfoRepoDiscovery::OrbRunner");
01028 
01029     } catch (const CORBA::Exception& ex) {
01030       ex._tao_print_exception(
01031         "ERROR: InfoRepoDiscovery::OrbRunner");
01032     }
01033 
01034     if (orb_->orb_core()->has_shutdown()) {
01035       done = true;
01036 
01037     } else {
01038       orb_->orb_core()->reactor()->reset_reactor_event_loop();
01039     }
01040   }
01041 
01042   return 0;
01043 }

Here is the call graph for this function:


Member Data Documentation


The documentation for this struct was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1