Implement a flushing strategy that blocks on write to flush. More...
#include <Block_Flushing_Strategy.h>


Public Member Functions | |
| virtual int | schedule_output (TAO_Transport *transport) |
| virtual int | cancel_output (TAO_Transport *transport) |
| Cancel all scheduled output for the transport argument. | |
| virtual int | flush_message (TAO_Transport *transport, TAO_Queued_Message *msg, ACE_Time_Value *max_wait_time) |
| virtual int | flush_transport (TAO_Transport *transport, ACE_Time_Value *max_wait_time) |
| Wait until the transport has no messages queued. | |
Private Member Functions | |
| int | call_handle_output (TAO_Transport *transport, const TAO::Transport::Drain_Constraints &dc) |
Implement a flushing strategy that blocks on write to flush.
Definition at line 38 of file Block_Flushing_Strategy.h.
| int TAO_Block_Flushing_Strategy::call_handle_output | ( | TAO_Transport * | transport, | |
| const TAO::Transport::Drain_Constraints & | dc | |||
| ) | [private] |
Definition at line 26 of file Block_Flushing_Strategy.cpp.
{
switch (transport->handle_output (dc).dre_)
{
case TAO_Transport::DR_ERROR: return -1;
case TAO_Transport::DR_QUEUE_EMPTY: // won't happen, fall-through anyway
case TAO_Transport::DR_OK: return 0;
case TAO_Transport::DR_WOULDBLOCK:
{
ACE_Countdown_Time counter (dc.timeout ());
TAO_Connection_Handler &ch = *transport->connection_handler ();
if (ch.handle_write_ready (dc.timeout ()) == -1)
{
return -1;
}
return 0;
}
}
return 0;
}
| int TAO_Block_Flushing_Strategy::cancel_output | ( | TAO_Transport * | transport | ) | [virtual] |
Cancel all scheduled output for the transport argument.
Implements TAO_Flushing_Strategy.
Definition at line 20 of file Block_Flushing_Strategy.cpp.
{
return 0;
}
| int TAO_Block_Flushing_Strategy::flush_message | ( | TAO_Transport * | transport, | |
| TAO_Queued_Message * | msg, | |||
| ACE_Time_Value * | max_wait_time | |||
| ) | [virtual] |
Wait until msg is sent out. Potentially other messages are flushed too, for example, because there are ahead in the queue.
Implements TAO_Flushing_Strategy.
Definition at line 49 of file Block_Flushing_Strategy.cpp.
{
TAO::Transport::Drain_Constraints dc (max_wait_time, true);
while (!msg->all_data_sent ())
{
if (this->call_handle_output (transport, dc) == -1)
return -1;
}
return 0;
}
| int TAO_Block_Flushing_Strategy::flush_transport | ( | TAO_Transport * | transport, | |
| ACE_Time_Value * | max_wait_time | |||
| ) | [virtual] |
Wait until the transport has no messages queued.
Implements TAO_Flushing_Strategy.
Definition at line 63 of file Block_Flushing_Strategy.cpp.
{
TAO::Transport::Drain_Constraints dc (max_wait_time, true);
while (!transport->queue_is_empty ())
{
if (this->call_handle_output (transport, dc) == -1)
return -1;
}
return 0;
}
| int TAO_Block_Flushing_Strategy::schedule_output | ( | TAO_Transport * | transport | ) | [virtual] |
Schedule the transport argument to be flushed If -2 is returned then the caller must call one of the flush_* methods. If -1 is returned then there was an error. If 0 is returned then the flush was scheduled successfully.
Implements TAO_Flushing_Strategy.
Definition at line 14 of file Block_Flushing_Strategy.cpp.
{
return MUST_FLUSH;
}
1.7.0