#include <Reactive_Connect_Strategy.h>
Inheritance diagram for TAO_Reactive_Connect_Strategy:
Public Member Functions | |
TAO_Reactive_Connect_Strategy (TAO_ORB_Core *orb) | |
Constructor. | |
~TAO_Reactive_Connect_Strategy (void) | |
Destructor. | |
virtual void | synch_options (ACE_Time_Value *val, ACE_Synch_Options &opt) |
Obtain the synch options that can be passed to ACE_Connector. | |
Protected Member Functions | |
virtual int | wait_i (TAO_LF_Event *ch, TAO_Transport *, ACE_Time_Value *val) |
This is the method that does all the real interesting stuff. |
Definition at line 38 of file Reactive_Connect_Strategy.h.
|
Constructor.
Definition at line 17 of file Reactive_Connect_Strategy.cpp.
00019 : TAO_Connect_Strategy (orb_core) 00020 { 00021 } |
|
Destructor.
Definition at line 23 of file Reactive_Connect_Strategy.cpp.
00024 { 00025 } |
|
Obtain the synch options that can be passed to ACE_Connector.
Implements TAO_Connect_Strategy. Definition at line 28 of file Reactive_Connect_Strategy.cpp. References ACE_Synch_Options::set().
|
|
This is the method that does all the real interesting stuff.
Implements TAO_Connect_Strategy. Definition at line 45 of file Reactive_Connect_Strategy.cpp. References ACE_DEBUG, ACE_TEXT, TAO_LF_Event::error_detected(), ETIME, TAO_LF_Event::keep_waiting(), LM_DEBUG, TAO_ORB_Core::run(), and TAO_debug_level.
00048 { 00049 int result = 0; 00050 if (ev == 0) 00051 return -1; 00052 00053 if (TAO_debug_level > 2) 00054 { 00055 //FUZZ: disable check_for_lack_ACE_OS 00056 ACE_DEBUG ((LM_DEBUG, 00057 ACE_TEXT ("TAO (%P|%t) - Waiting in the Reactor for ") 00058 ACE_TEXT ("connection completion - wait ()\n"))); 00059 //FUZZ: enable check_for_lack_ACE_OS 00060 } 00061 00062 try 00063 { 00064 while (ev->keep_waiting ()) 00065 { 00066 result = 00067 this->orb_core_->run (max_wait_time, 1); 00068 00069 // Did we timeout? If so, stop running the loop. 00070 if (result == 0 && 00071 max_wait_time != 0 && 00072 *max_wait_time == ACE_Time_Value::zero) 00073 { 00074 errno = ETIME; 00075 result = -1; 00076 break; 00077 } 00078 00079 // Other errors? If so, stop running the loop. 00080 if (result == -1) 00081 break; 00082 } 00083 } 00084 catch (const ::CORBA::Exception&) 00085 { 00086 result = -1; 00087 } 00088 00089 // Set the result. 00090 if (result != -1 && ev->error_detected ()) 00091 { 00092 result = -1; 00093 } 00094 00095 return result; 00096 } |