diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:21 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:21 +0000 |
commit | 3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (patch) | |
tree | 197c810e5f5bce17b1233a7cb8d7b50c0bcd25e2 /TAO/tao/Reactive_Flushing_Strategy.cpp | |
parent | 6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (diff) | |
download | ATCD-3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c.tar.gz |
Repo restructuring
Diffstat (limited to 'TAO/tao/Reactive_Flushing_Strategy.cpp')
-rw-r--r-- | TAO/tao/Reactive_Flushing_Strategy.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/TAO/tao/Reactive_Flushing_Strategy.cpp b/TAO/tao/Reactive_Flushing_Strategy.cpp new file mode 100644 index 00000000000..085779f99ed --- /dev/null +++ b/TAO/tao/Reactive_Flushing_Strategy.cpp @@ -0,0 +1,83 @@ +// -*- C++ -*- +// $Id$ + +#include "tao/Reactive_Flushing_Strategy.h" +#include "tao/Transport.h" +#include "tao/ORB_Core.h" +#include "tao/Queued_Message.h" + +ACE_RCSID (tao, + Reactive_Flushing_Strategy, + "$Id$") + + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +int +TAO_Reactive_Flushing_Strategy::schedule_output (TAO_Transport *transport) +{ + return transport->schedule_output_i (); +} + +int +TAO_Reactive_Flushing_Strategy::cancel_output (TAO_Transport *transport) +{ + return transport->cancel_output_i (); +} + +int +TAO_Reactive_Flushing_Strategy::flush_message (TAO_Transport *transport, + TAO_Queued_Message *msg, + ACE_Time_Value *max_wait_time) +{ + int result = 0; + + // @@ Should we pass this down? Can we? + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + TAO_ORB_Core * const orb_core = transport->orb_core (); + + while (!msg->all_data_sent () && result >= 0) + { + result = orb_core->run (max_wait_time, 1 ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + } + ACE_CATCHANY + { + return -1; + } + ACE_ENDTRY; + + return result; +} + +int +TAO_Reactive_Flushing_Strategy::flush_transport (TAO_Transport *transport) +{ + // @@ Should we pass this down? Can we? + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + TAO_ORB_Core * const orb_core = transport->orb_core (); + + while (!transport->queue_is_empty ()) + { + int const result = orb_core->run (0, 1 ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (result == -1) + return -1; + } + } + ACE_CATCHANY + { + return -1; + } + ACE_ENDTRY; + + return 0; +} + +TAO_END_VERSIONED_NAMESPACE_DECL |