TAO_CosNotification 2.0.2
|
Class which manages the delivery of events to destination. More...
#include <Routing_Slip.h>
Public Member Functions | |
void | set_rspm (Routing_Slip_Persistence_Manager *rspm) |
void | reconnect (void) |
virtual | ~Routing_Slip () |
Destructor (should be private but that inspires compiler wars) | |
void | route (TAO_Notify_ProxyConsumer *pc, bool reliable_channel) |
void | dispatch (TAO_Notify_ProxySupplier *proxy_supplier, bool filter) |
Schedule delivery to a consumer via a proxy supplier. | |
void | wait_persist () |
Wait until the event/routing_slip has been saved at least once. | |
void | delivery_request_complete (size_t request_id) |
A delivery request has been satisfied. | |
void | at_front_of_persist_queue () |
This Routing_Slip reached the front of the persistence queue. | |
virtual void | persist_complete () |
The persistent storage has completed the last request. | |
const TAO_Notify_Event::Ptr & | event () const |
int | sequence () const |
Provide an identifying number for this Routing Slip to use in debug messages. | |
bool | should_retry () const |
Should delivery of this event be retried if it fails? | |
Static Public Member Functions | |
static Routing_Slip_Ptr | create (const TAO_Notify_Event::Ptr &event) |
"Factory" method for normal use. | |
static Routing_Slip_Ptr | create (TAO_Notify_EventChannelFactory &ecf, Routing_Slip_Persistence_Manager *rspm) |
"Factory" method for use during reload from persistent storage. | |
Private Types | |
enum | State { rssCREATING, rssTRANSIENT, rssRELOADED, rssNEW, rssCOMPLETE_WHILE_NEW, rssSAVING, rssSAVED, rssUPDATING, rssCHANGED_WHILE_SAVING, rssCHANGED, rssCOMPLETE, rssDELETING, rssTERMINAL } |
typedef ACE_Guard < TAO_SYNCH_MUTEX > | Routing_Slip_Guard |
Private Member Functions | |
void | enter_state_transient (Routing_Slip_Guard &guard) |
void | continue_state_transient (Routing_Slip_Guard &guard) |
void | enter_state_reloaded (Routing_Slip_Guard &guard) |
void | enter_state_new (Routing_Slip_Guard &guard) |
void | continue_state_new (Routing_Slip_Guard &guard) |
void | enter_state_complete_while_new (Routing_Slip_Guard &guard) |
void | enter_state_saving (Routing_Slip_Guard &guard) |
void | enter_state_saved (Routing_Slip_Guard &guard) |
void | enter_state_updating (Routing_Slip_Guard &guard) |
void | enter_state_changed_while_saving (Routing_Slip_Guard &guard) |
void | continue_state_changed_while_saving (Routing_Slip_Guard &guard) |
void | enter_state_changed (Routing_Slip_Guard &guard) |
void | continue_state_changed (Routing_Slip_Guard &guard) |
void | enter_state_complete (Routing_Slip_Guard &guard) |
void | enter_state_deleting (Routing_Slip_Guard &guard) |
void | enter_state_terminal (Routing_Slip_Guard &guard) |
bool | create_persistence_manager () |
Routing_Slip (const TAO_Notify_Event::Ptr &event) | |
Private constructor for use by create method. | |
bool | all_deliveries_complete () const |
Test to see if all deliveries are complete. | |
void | add_to_persist_queue (Routing_Slip_Guard &guard) |
This routing_slip needs to be saved. | |
void | marshal (TAO_OutputCDR &cdr) |
Marshal into a CDR. | |
bool | unmarshal (TAO_Notify_EventChannelFactory &ecf, TAO_InputCDR &rscdr) |
Marshal from CDR. | |
Private Attributes | |
TAO_SYNCH_MUTEX | internals_ |
Protection for internal information. | |
bool | is_safe_ |
true when event persistence qos is guaranteed | |
ACE_SYNCH_CONDITION | until_safe_ |
signalled when is_safe_ goes true | |
Routing_Slip_Ptr | this_ptr_ |
TAO_Notify_Event::Ptr | event_ |
enum TAO_Notify::Routing_Slip::State | state_ |
Delivery_Request_Vec | delivery_requests_ |
A collection of delivery requests. | |
Delivery_Method_Vec | delivery_methods_ |
Methods that should be restarted during event recovery. | |
size_t | complete_requests_ |
How many delivery requests are complete. | |
Routing_Slip_Persistence_Manager * | rspm_ |
Pointer to a Routing_Slip_Persistence_Manager. | |
int | sequence_ |
Static Private Attributes | |
static TAO_SYNCH_MUTEX | sequence_lock_ |
static int | routing_slip_sequence_ = 0 |
static size_t | count_enter_transient_ = 0 |
static size_t | count_continue_transient_ = 0 |
static size_t | count_enter_reloaded_ = 0 |
static size_t | count_enter_new_ = 0 |
static size_t | count_continue_new_ = 0 |
static size_t | count_enter_complete_while_new_ = 0 |
static size_t | count_enter_saving_ = 0 |
static size_t | count_enter_saved_ = 0 |
static size_t | count_enter_updating_ = 0 |
static size_t | count_enter_changed_while_saving_ = 0 |
static size_t | count_continue_changed_while_saving_ = 0 |
static size_t | count_enter_changed_ = 0 |
static size_t | count_continue_changed_ = 0 |
static size_t | count_enter_complete_ = 0 |
static size_t | count_enter_deleting_ = 0 |
static size_t | count_enter_terminal_ = 0 |
static Routing_Slip_Queue | persistent_queue_ |
Class which manages the delivery of events to destination.
Interacts with persistent storage to provide reliable delivery.
typedef ACE_Guard< TAO_SYNCH_MUTEX > TAO_Notify::Routing_Slip::Routing_Slip_Guard [private] |
enum TAO_Notify::Routing_Slip::State [private] |
TAO_Notify::Routing_Slip::~Routing_Slip | ( | ) | [virtual] |
Destructor (should be private but that inspires compiler wars)
TAO_Notify::Routing_Slip::Routing_Slip | ( | const TAO_Notify_Event::Ptr & | event | ) | [private] |
Private constructor for use by create method.
void TAO_Notify::Routing_Slip::add_to_persist_queue | ( | Routing_Slip_Guard & | guard | ) | [private] |
This routing_slip needs to be saved.
bool TAO_Notify::Routing_Slip::all_deliveries_complete | ( | ) | const [private] |
Test to see if all deliveries are complete.
void TAO_Notify::Routing_Slip::at_front_of_persist_queue | ( | ) |
This Routing_Slip reached the front of the persistence queue.
void TAO_Notify::Routing_Slip::continue_state_changed | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::continue_state_changed_while_saving | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::continue_state_new | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::continue_state_transient | ( | Routing_Slip_Guard & | guard | ) | [private] |
Routing_Slip_Ptr TAO_Notify::Routing_Slip::create | ( | const TAO_Notify_Event::Ptr & | event | ) | [static] |
"Factory" method for normal use.
Routing_Slip_Ptr TAO_Notify::Routing_Slip::create | ( | TAO_Notify_EventChannelFactory & | ecf, |
Routing_Slip_Persistence_Manager * | rspm | ||
) | [static] |
"Factory" method for use during reload from persistent storage.
bool TAO_Notify::Routing_Slip::create_persistence_manager | ( | ) | [private] |
void TAO_Notify::Routing_Slip::delivery_request_complete | ( | size_t | request_id | ) |
A delivery request has been satisfied.
void TAO_Notify::Routing_Slip::dispatch | ( | TAO_Notify_ProxySupplier * | proxy_supplier, |
bool | filter | ||
) |
Schedule delivery to a consumer via a proxy supplier.
proxy_supplier | the proxy supplier that will deliver the event |
filter | should consumer-based filtering be applied? |
void TAO_Notify::Routing_Slip::enter_state_changed | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_changed_while_saving | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_complete | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_complete_while_new | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_deleting | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_new | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_reloaded | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_saved | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_saving | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_terminal | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_transient | ( | Routing_Slip_Guard & | guard | ) | [private] |
void TAO_Notify::Routing_Slip::enter_state_updating | ( | Routing_Slip_Guard & | guard | ) | [private] |
const TAO_Notify_Event::Ptr & TAO_Notify::Routing_Slip::event | ( | ) | const |
void TAO_Notify::Routing_Slip::marshal | ( | TAO_OutputCDR & | cdr | ) | [private] |
Marshal into a CDR.
void TAO_Notify::Routing_Slip::persist_complete | ( | ) | [virtual] |
The persistent storage has completed the last request.
Implements TAO_Notify::Persistent_Callback.
void TAO_Notify::Routing_Slip::reconnect | ( | void | ) |
void TAO_Notify::Routing_Slip::route | ( | TAO_Notify_ProxyConsumer * | pc, |
bool | reliable_channel | ||
) |
Route this event to destinations must be the Action request after the routing slip is created.
int TAO_Notify::Routing_Slip::sequence | ( | ) | const |
Provide an identifying number for this Routing Slip to use in debug messages.
void TAO_Notify::Routing_Slip::set_rspm | ( | Routing_Slip_Persistence_Manager * | rspm | ) |
bool TAO_Notify::Routing_Slip::should_retry | ( | ) | const |
Should delivery of this event be retried if it fails?
bool TAO_Notify::Routing_Slip::unmarshal | ( | TAO_Notify_EventChannelFactory & | ecf, |
TAO_InputCDR & | rscdr | ||
) | [private] |
Marshal from CDR.
void TAO_Notify::Routing_Slip::wait_persist | ( | ) |
Wait until the event/routing_slip has been saved at least once.
size_t TAO_Notify::Routing_Slip::complete_requests_ [private] |
How many delivery requests are complete.
size_t TAO_Notify::Routing_Slip::count_continue_changed_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_continue_changed_while_saving_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_continue_new_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_continue_transient_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_changed_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_changed_while_saving_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_complete_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_complete_while_new_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_deleting_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_new_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_reloaded_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_saved_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_saving_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_terminal_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_transient_ = 0 [static, private] |
size_t TAO_Notify::Routing_Slip::count_enter_updating_ = 0 [static, private] |
Methods that should be restarted during event recovery.
A collection of delivery requests.
TAO_SYNCH_MUTEX TAO_Notify::Routing_Slip::internals_ [private] |
Protection for internal information.
bool TAO_Notify::Routing_Slip::is_safe_ [private] |
true when event persistence qos is guaranteed
Routing_Slip_Queue TAO_Notify::Routing_Slip::persistent_queue_ [static, private] |
int TAO_Notify::Routing_Slip::routing_slip_sequence_ = 0 [static, private] |
Pointer to a Routing_Slip_Persistence_Manager.
int TAO_Notify::Routing_Slip::sequence_ [private] |
TAO_SYNCH_MUTEX TAO_Notify::Routing_Slip::sequence_lock_ [static, private] |
enum TAO_Notify::Routing_Slip::State TAO_Notify::Routing_Slip::state_ [private] |
Smart pointer to this object Provides continuity between smart pointers and "Routing_Slip::this" Also lets the Routing_Slip manage its own minimum lifetime.
ACE_SYNCH_CONDITION TAO_Notify::Routing_Slip::until_safe_ [private] |
signalled when is_safe_ goes true