Concrete implementation of a connect strategy that waits on the reactor during asynch connects. More...
#include <Reactive_Connect_Strategy.h>


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. | |
Concrete implementation of a connect strategy that waits on the reactor during asynch connects.
Definition at line 38 of file Reactive_Connect_Strategy.h.
| TAO_Reactive_Connect_Strategy::TAO_Reactive_Connect_Strategy | ( | TAO_ORB_Core * | orb | ) |
Constructor.
Definition at line 17 of file Reactive_Connect_Strategy.cpp.
: TAO_Connect_Strategy (orb_core) { }
| TAO_Reactive_Connect_Strategy::~TAO_Reactive_Connect_Strategy | ( | void | ) |
| void TAO_Reactive_Connect_Strategy::synch_options | ( | ACE_Time_Value * | val, | |
| ACE_Synch_Options & | opt | |||
| ) | [virtual] |
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.
{
if (timeout != 0)
{
options.set (ACE_Synch_Options::USE_REACTOR,
*timeout);
}
else
{
// Making it sure it is blocking.
options.set (ACE_Synch_Options::USE_REACTOR,
ACE_Time_Value::zero);
}
}
| int TAO_Reactive_Connect_Strategy::wait_i | ( | TAO_LF_Event * | ev, | |
| TAO_Transport * | t, | |||
| ACE_Time_Value * | val | |||
| ) | [protected, virtual] |
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.
{
int result = 0;
if (ev == 0)
return -1;
if (TAO_debug_level > 2)
{
//FUZZ: disable check_for_lack_ACE_OS
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - Waiting in the Reactor for ")
ACE_TEXT ("connection completion - wait ()\n")));
//FUZZ: enable check_for_lack_ACE_OS
}
try
{
while (ev->keep_waiting ())
{
result =
this->orb_core_->run (max_wait_time, 1);
// Did we timeout? If so, stop running the loop.
if (result == 0 &&
max_wait_time != 0 &&
*max_wait_time == ACE_Time_Value::zero)
{
errno = ETIME;
result = -1;
break;
}
// Other errors? If so, stop running the loop.
if (result == -1)
break;
}
}
catch (const ::CORBA::Exception&)
{
result = -1;
}
// Set the result.
if (result != -1 && ev->error_detected ())
{
result = -1;
}
return result;
}
1.7.0