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
Collaboration diagram for TAO_Notify::Routing_Slip:

Collaboration graph
List of all members.

Public Member Functions

void set_rspm (Routing_Slip_Persistence_Manager *rspm)
void reconnect (ACE_ENV_SINGLE_ARG_DECL)
virtual ~Routing_Slip ()
 destructor (should be private but that inspires compiler wars)
void route (TAO_Notify_ProxyConsumer *pc, bool reliable_channel ACE_ENV_ARG_DECL)
void dispatch (TAO_Notify_ProxySupplier *proxy_supplier, bool filter ACE_ENV_ARG_DECL)
 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 ACE_ENV_ARG_DECL)
 "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

typedef ACE_Guard< TAO_SYNCH_MUTEXRouting_Slip_Guard
enum  State {

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
 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.
 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

enum TAO_Notify::Routing_Slip::State [private]

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


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

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 TAO_Notify_EventChannelFactory ecf,
Routing_Slip_Persistence_Manager rspm

"Factory" method for use during reload from persistent storage.

Routing_Slip_Ptr TAO_Notify::Routing_Slip::create const TAO_Notify_Event::Ptr &event  ACE_ENV_ARG_DECL  )  [static]

"Factory" method for normal use.

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  ACE_ENV_ARG_DECL

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 ACE_ENV_SINGLE_ARG_DECL   ) 

void TAO_Notify::Routing_Slip::route TAO_Notify_ProxyConsumer pc,
bool reliable_channel  ACE_ENV_ARG_DECL

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

Marshal from CDR.

void TAO_Notify::Routing_Slip::wait_persist  ) 

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

Member Data Documentation

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]

Delivery_Method_Vec TAO_Notify::Routing_Slip::delivery_methods_ [private]

Methods that should be restarted during event recovery.

Delivery_Request_Vec TAO_Notify::Routing_Slip::delivery_requests_ [private]

A collection of delivery requests.

TAO_Notify_Event::Ptr TAO_Notify::Routing_Slip::event_ [private]

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]

Routing_Slip_Persistence_Manager* TAO_Notify::Routing_Slip::rspm_ [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]

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

Routing_Slip_Ptr TAO_Notify::Routing_Slip::this_ptr_ [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

The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:23:56 2005 for TAO_CosNotification by  doxygen 1.4.5