diff options
Diffstat (limited to 'TAO/tao/LF_Connect_Strategy.cpp')
-rw-r--r-- | TAO/tao/LF_Connect_Strategy.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/TAO/tao/LF_Connect_Strategy.cpp b/TAO/tao/LF_Connect_Strategy.cpp new file mode 100644 index 00000000000..a52852f0529 --- /dev/null +++ b/TAO/tao/LF_Connect_Strategy.cpp @@ -0,0 +1,63 @@ +#include "tao/LF_Connect_Strategy.h" +#include "tao/LF_Multi_Event.h" +#include "tao/Connection_Handler.h" +#include "tao/LF_Follower.h" +#include "tao/Leader_Follower.h" +#include "tao/Transport.h" +#include "tao/ORB_Core.h" +#include "ace/Synch_Options.h" + +ACE_RCSID(tao, + LF_Connect_Strategy, + "$Id$") + + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +TAO_LF_Connect_Strategy::TAO_LF_Connect_Strategy ( + TAO_ORB_Core *orb_core) + : TAO_Connect_Strategy (orb_core) +{ +} + +TAO_LF_Connect_Strategy::~TAO_LF_Connect_Strategy (void) +{ +} + +void +TAO_LF_Connect_Strategy::synch_options (ACE_Time_Value *timeout, + ACE_Synch_Options &options) +{ + 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_LF_Connect_Strategy::wait_i (TAO_LF_Event *ev, + TAO_Transport *transport, + ACE_Time_Value *max_wait_time) +{ + if (transport == 0) + return -1; + + TAO_Leader_Follower &leader_follower = + this->orb_core_->leader_follower (); + + int result = + leader_follower.wait_for_event (ev, transport, max_wait_time); + + if (ev->error_detected () && result != -1) + result = -1; + + return result; +} + + +TAO_END_VERSIONED_NAMESPACE_DECL |