Encapsulate the flushing control parameters. More...
#include <Transport.h>
Public Member Functions | |
Drain_Constraints () | |
Default constructor. | |
Drain_Constraints (ACE_Time_Value *timeout, bool block_on_io) | |
Constructor. | |
bool | block_on_io () const |
ACE_Time_Value * | timeout () const |
Private Attributes | |
ACE_Time_Value * | timeout_ |
bool | block_on_io_ |
Encapsulate the flushing control parameters.
At several points, the ORB needs to flush data from a transport to the underlying I/O mechanisms. How this data is flushed depends on the context where the request is made, the ORB configuration and the application level policies in effect.
Some examples:
# When idle, the ORB will want to send data on any socket that has space available. In this case, the queue must be drained on a best-effort basis, without any blocking. # If the ORB is configured to handle nested upcalls, any two-way request should block and push data to the underlying socket as fast as possible. # In the same use-case, but now with a timeout policy in effect, the ORB will need to send the data use I/O operations with timeouts (as implemented by ACE::sendv() # When the ORB is configured to support nested upcalls, any two-way, reliable oneway or similar should wait using the reactor or Leader-Follower implementation. While still respecting the timeout policies.
Instead of sprinkling if() statements throughput the critical path trying to determine how the I/O operations should be performed, we pass the information encapsulated in this class. The caller into the Transport object determines the right parameters to use, and the Transport object simply obeys those instructions.
Definition at line 105 of file Transport.h.
TAO::Transport::Drain_Constraints::Drain_Constraints | ( | ) | [inline] |
Default constructor.
Definition at line 109 of file Transport.h.
: timeout_(0) , block_on_io_(false) { }
TAO::Transport::Drain_Constraints::Drain_Constraints | ( | ACE_Time_Value * | timeout, | |
bool | block_on_io | |||
) | [inline] |
Constructor.
Definition at line 116 of file Transport.h.
: timeout_(timeout) , block_on_io_(block_on_io) { }
bool TAO::Transport::Drain_Constraints::block_on_io | ( | ) | const [inline] |
If true, then the ORB should block on I/O operations instead of using non-blocking I/O.
Definition at line 128 of file Transport.h.
{ return block_on_io_; }
ACE_Time_Value* TAO::Transport::Drain_Constraints::timeout | ( | void | ) | const [inline] |
The maximum time to block on I/O operations (or nested loops) based on the current timeout policies.
Definition at line 137 of file Transport.h.
{ return timeout_; }
bool TAO::Transport::Drain_Constraints::block_on_io_ [private] |
Definition at line 144 of file Transport.h.
ACE_Time_Value* TAO::Transport::Drain_Constraints::timeout_ [private] |
Definition at line 143 of file Transport.h.