TAO_Notify::Routing_Slip Class Reference

Class which manages the delivery of events to destination. More...

#include <Routing_Slip.h>

Inheritance diagram for TAO_Notify::Routing_Slip:

Inheritance graph
[legend]
Collaboration diagram for TAO_Notify::Routing_Slip:

Collaboration graph
[legend]

List of all members.

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::Ptrevent () 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_Managerrspm_
 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_


Detailed Description

Class which manages the delivery of events to destination.

Interacts with persistent storage to provide reliable delivery.


Member Typedef Documentation

typedef ACE_Guard< TAO_SYNCH_MUTEX > TAO_Notify::Routing_Slip::Routing_Slip_Guard [private]


Member Enumeration Documentation

A mini-state machine to control persistence See external doc for circles and arrows.

Enumerator:
rssCREATING 
rssTRANSIENT 
rssRELOADED 
rssNEW 
rssCOMPLETE_WHILE_NEW 
rssSAVING 
rssSAVED 
rssUPDATING 
rssCHANGED_WHILE_SAVING 
rssCHANGED 
rssCOMPLETE 
rssDELETING 
rssTERMINAL 


Constructor & Destructor Documentation

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.


Member Function Documentation

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.

void TAO_Notify::Routing_Slip::set_rspm ( Routing_Slip_Persistence_Manager rspm  ) 

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.

void TAO_Notify::Routing_Slip::dispatch ( TAO_Notify_ProxySupplier proxy_supplier,
bool  filter 
)

Schedule delivery to a consumer via a proxy supplier.

Parameters:
proxy_supplier the proxy supplier that will deliver the event
filter should consumer-based filtering be applied?

void TAO_Notify::Routing_Slip::wait_persist (  ) 

Wait until the event/routing_slip has been saved at least once.

void TAO_Notify::Routing_Slip::delivery_request_complete ( size_t  request_id  ) 

A delivery request has been satisfied.

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::persist_complete (  )  [virtual]

The persistent storage has completed the last request.

Implements TAO_Notify::Persistent_Callback.

const TAO_Notify_Event::Ptr & TAO_Notify::Routing_Slip::event (  )  const

int TAO_Notify::Routing_Slip::sequence (  )  const

Provide an identifying number for this Routing Slip to use in debug messages.

bool TAO_Notify::Routing_Slip::should_retry (  )  const

Should delivery of this event be retried if it fails?

void TAO_Notify::Routing_Slip::enter_state_transient ( Routing_Slip_Guard guard  )  [private]

void TAO_Notify::Routing_Slip::continue_state_transient ( 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_new ( Routing_Slip_Guard guard  )  [private]

void TAO_Notify::Routing_Slip::continue_state_new ( 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_saving ( 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_updating ( 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::continue_state_changed_while_saving ( Routing_Slip_Guard guard  )  [private]

void TAO_Notify::Routing_Slip::enter_state_changed ( Routing_Slip_Guard guard  )  [private]

void TAO_Notify::Routing_Slip::continue_state_changed ( 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_deleting ( Routing_Slip_Guard guard  )  [private]

void TAO_Notify::Routing_Slip::enter_state_terminal ( Routing_Slip_Guard guard  )  [private]

bool TAO_Notify::Routing_Slip::create_persistence_manager (  )  [private]

bool TAO_Notify::Routing_Slip::all_deliveries_complete (  )  const [private]

Test to see if all deliveries are complete.

void TAO_Notify::Routing_Slip::add_to_persist_queue ( Routing_Slip_Guard guard  )  [private]

This routing_slip needs to be saved.

void TAO_Notify::Routing_Slip::marshal ( TAO_OutputCDR cdr  )  [private]

Marshal into a CDR.

bool TAO_Notify::Routing_Slip::unmarshal ( TAO_Notify_EventChannelFactory ecf,
TAO_InputCDR rscdr 
) [private]

Marshal from CDR.


Member Data Documentation

TAO_SYNCH_MUTEX TAO_Notify::Routing_Slip::internals_ [private]

Protection for internal information.

true when event persistence qos is guaranteed

ACE_SYNCH_CONDITION TAO_Notify::Routing_Slip::until_safe_ [private]

signalled when is_safe_ goes true

Smart pointer to this object Provides continuity between smart pointers and "Routing_Slip::this" Also lets the Routing_Slip manage its own minimum lifetime.

A collection of delivery requests.

Methods that should be restarted during event recovery.

How many delivery requests are complete.

TAO_SYNCH_MUTEX TAO_Notify::Routing_Slip::sequence_lock_ [static, private]

size_t TAO_Notify::Routing_Slip::count_enter_new_ = 0 [static, private]

size_t TAO_Notify::Routing_Slip::count_continue_new_ = 0 [static, private]

size_t TAO_Notify::Routing_Slip::count_enter_saving_ = 0 [static, private]

size_t TAO_Notify::Routing_Slip::count_enter_saved_ = 0 [static, private]

size_t TAO_Notify::Routing_Slip::count_enter_changed_ = 0 [static, private]


The documentation for this class was generated from the following files:

Generated on Mon May 19 04:24:55 2008 for TAO_CosNotification by  doxygen 1.5.5