| TAO_CosNotification
    2.2.8
    | 
A queue of Routing_Slips waiting to be persisted. More...
#include <Routing_Slip_Queue.h>

| Public Member Functions | |
| Routing_Slip_Queue (size_t allowed=1) | |
| Construct setting "allowed".  More... | |
| ~Routing_Slip_Queue () | |
| Destructor.  More... | |
| void | add (const Routing_Slip_Ptr &routing_slip) | 
| Add a routing slip to the tail of the queue and dispatch if necessary.  More... | |
| void | complete () | 
| A call back to indicate that processing is complete for a previously-queued Routing_Slip.  More... | |
| 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.  More... | |
| size_t | active_ | 
| Queue | queue_ | 
A queue of Routing_Slips waiting to be persisted.
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.
| 
 | private | 
| 
 | 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.
| 
 | 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.
| 
 | private | 
| 
 | private | 
| 
 | 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.)
| 
 | private | 
| 
 | private | 
| 
 | private | 
Protection for internal information.
| 
 | private | 
 1.8.6
 1.8.6