#include <Routing_Slip_Queue.h>
Collaboration diagram for TAO_Notify::Routing_Slip_Queue:

Public Member Functions | |
| Routing_Slip_Queue (size_t allowed=1) | |
| Construct setting "allowed". | |
| ~Routing_Slip_Queue () | |
| Destructor. | |
| void | add (const Routing_Slip_Ptr &routing_slip) |
| Add a routing slip to the tail of the queue and dispatch if necessary. | |
| void | complete () |
| A call back to indicate that processing is complete for a previously-queued Routing_Slip. | |
| void | set_allowed (size_t allowed) |
Private Types | |
| typedef ACE_Unbounded_Queue< Routing_Slip_Ptr > | Queue |
| typedef ACE_Guard< TAO_SYNCH_MUTEX > | Guard |
Private Member Functions | |
| void | dispatch (Guard &guard) |
| bool | dispatch_one (Guard &guard) |
| Routing_Slip_Queue (const Routing_Slip_Queue &rhs) | |
| Routing_Slip_Queue & | operator= (const Routing_Slip_Queue &rhs) |
Private Attributes | |
| size_t | allowed_ |
| TAO_SYNCH_MUTEX | internals_ |
| Protection for internal information. | |
| size_t | active_ |
| Queue | queue_ |
The Routing_Slip_Queue keeps a queue of Routing_Slips waiting to be written to persistent storage. The "allowed" parameter determines how many Routing_Slips can be handled simultaneously by the persistent storage. Until this threshold is reached, Routing_Slips are not held in the queue, but pass straight through.
Once the allowe number of Routing_Slips are being handled, any additional requests are held in the queue until persistence is complete for another Routing_Slips.
Having Routing_Slips waiting in the queue is "a good thing" [TM] because it allows delivery completions to be applied to the routing slip before it is written -- thereby reducing or completely eliminating the number of actual writes to persistent storage.
Experimentation indicates that a good value for "allowed" is 1.
Allowed == 0 is treated as a special case meaning pass all Routing_Slips through the queue immediately. Setting it a good way to test how well your storage device withstands continuous beating.
typedef ACE_Guard< TAO_SYNCH_MUTEX > TAO_Notify::Routing_Slip_Queue::Guard [private] |
typedef ACE_Unbounded_Queue<Routing_Slip_Ptr> TAO_Notify::Routing_Slip_Queue::Queue [private] |
| TAO_Notify::Routing_Slip_Queue::Routing_Slip_Queue | ( | size_t | allowed = 1 |
) |
Construct setting "allowed".
| allowed | the number of Routing_Slips that can be handled simultaneously by the persistent store. |
| TAO_Notify::Routing_Slip_Queue::~Routing_Slip_Queue | ( | ) |
Destructor.
| TAO_Notify::Routing_Slip_Queue::Routing_Slip_Queue | ( | const Routing_Slip_Queue & | rhs | ) | [private] |
| void TAO_Notify::Routing_Slip_Queue::add | ( | const Routing_Slip_Ptr & | routing_slip | ) |
Add a routing slip to the tail of the queue and dispatch if necessary.
| void TAO_Notify::Routing_Slip_Queue::complete | ( | ) |
A call back to indicate that processing is complete for a previously-queued Routing_Slip.
| void TAO_Notify::Routing_Slip_Queue::dispatch | ( | Guard & | guard | ) | [private] |
| bool TAO_Notify::Routing_Slip_Queue::dispatch_one | ( | Guard & | guard | ) | [private] |
| Routing_Slip_Queue& TAO_Notify::Routing_Slip_Queue::operator= | ( | const Routing_Slip_Queue & | rhs | ) | [private] |
| void TAO_Notify::Routing_Slip_Queue::set_allowed | ( | size_t | allowed | ) |
/brief Adjust the "allowed" value on-the-fly (not recommended, but it works.)
size_t TAO_Notify::Routing_Slip_Queue::active_ [private] |
size_t TAO_Notify::Routing_Slip_Queue::allowed_ [private] |
Protection for internal information.
Queue TAO_Notify::Routing_Slip_Queue::queue_ [private] |
1.4.7-1